2011-08-08 24 views
0

私はその内部のウィジェットのサイズに関係なく一定のサイズを持つwx.StaticBoxを作成しようとしています。だから私は、次のコードを含むパネルいる:wx.StaticBoxサイズパラメータが尊重されていません

box = wx.StaticBox(self, -1, 'BoxTitle', size=(200, 200)) 
bsizer = wx.StaticBoxSizer(box, wx.VERTICAL) 

text = wx.StaticText(self, -1, 'Text') 
bsizer.Add(text) 

border = wx.BoxSizer() 
border.Add(bsizer) 
self.SetSizer(border) 

はしかし、箱は単に代わりに指定された200×200のサイズにこだわりの、内StaticTextウィジェットをラップします。ボックスをハードコードされたサイズに適合させるにはどうしたらいいですか?

+1

コードを実行すると、MacOSでうまく動作します。あなたの例の自己は、トップフレームか、階層のあるパネルですか?マークのように常にSetMaxSizeやSetMinSizeを使うことができますが、これは一般的には良い方法ではありません。 – Bogdan

答えて

1

あなたStaticBoxそれはあなたのためにサイズを強制的に作成した後に以下を追加した場合:あなたのテキストは、それは意志StaticBoxよりも広くなっているので、もしStaticTextボックスは、そのテキストをラップしないこと

box.SetMaxSize((200,200)) 

注意をボックスの端を越えて拡張します(これはOS X上では少なくとも行いますが、Windowsでは異なる動作をする可能性があります)。

アップデート:Windowsでは

サイジングは異なり多くを振る舞う - StaticBoxは単なるテキストの周りに縮小します。

私は明示的にSetMinSizeまたはSetMaxSizeでウィンドウサイズを設定ボグダンに同意しますが、おそらく良いアイデアではありません(例えば、システムのフォントサイズの変更や内容は、もはやあなたが設定したサイズの制約にうまく収まる場合)、 StaticTextコントロールはその内容のサイズに縮小され、明示的にそのコンテナにサイズ制限を強制しない限り、すべてのものが取り出されるように見えます。

ボックスコントロールでSetMaxSizeまたはSetMinSizeを使用するか、StaticText以外のコントロールオプションを使用することをお勧めします。代わりにHtmlWindowを試すこともできます。

+1

残念ながら、これは私にとってWin7ではうまくいきませんでした。代わりにGridSizerを使う必要がありました。応答とフォローアップをありがとう。 – Yony