wx.PyControl
を含むことができますwx.Sizer
か?
私が最終的にここでやろうとしていること (フロート値を持つスピナー) は、別の質問で既に回答されていることに注意してください。wx.PyControl
私は、独自のカスタム ウィジェットを作成する必要がある場合に役立つスキルである、内でのウィジェットのレイアウトに特に興味があります。私はすでに CreationCustomControls を読んでいますが、サブクラス内でサイザーを使用していませんでした。wx.PyControl
以下のコードを使用すると、CustomWidget
正しく表示されません。ウィジェットの操作に当てはまるDoGetBestSize
と思うので、まだやっていません。私は実際に の中でそのことをやっています。wx.Sizer
wx.Sizer
CustomWidget
これが私のコードです(サブウィジェット間のイベントバインディング
なし) :
import wx
class CustomWidget(wx.PyControl):
def __init__(self, parent):
wx.PyControl.__init__(self, parent=parent, style=wx.NO_BORDER) # Style added.
text = wx.TextCtrl(parent=self)
spin = wx.SpinButton(parent=self, style=wx.SP_VERTICAL)
sizer = wx.GridBagSizer()
self.layout(text, spin, sizer)
self.OnInit(text, sizer)
def OnInit(self, text, sizer):
text.SetValue(u"0.000")
def layout(self, text, spin, sizer):
self.SetSizer(sizer)
sizer.Add(text, pos=(0, 0), flag=wx.ALIGN_CENTER)
sizer.Add(spin, pos=(0, 1), flag=wx.ALIGN_CENTER)
self.Fit()
self.Layout() # This is what I lacked. I needed to call .Layout()
self.CenterOnParent()