a 可以wx.PyControl
包含 awx.Sizer
吗?
请注意,我最终在这里尝试做的事情(带有浮点值的微调器)已经在另一个问题中得到了回答。我对在 a 中布局小部件特别感兴趣,wx.PyControl
如果我遇到需要制作自己的自定义小部件时,这项技能可能会很有用。我已经通读了CreatingCustomControls,但它没有在wx.PyControl
子类中使用sizer。
使用下面的代码,我的CustomWidget
只是看起来不正确。我还没有做,因为DoGetBestSize
我认为这适用于对小部件的操作。我实际上正在做它的事情。wx.Sizer
wx.Sizer
CustomWidget
这是我的代码(没有子小部件之间的事件绑定):
编辑:这是我更正的类代码,感谢Steven Sproat:
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()