Can a wx.PyControl
包含一个wx.Sizer
?
请注意,我最终想要在这里做的事情(具有浮点值的旋转器)已经在另一个问题中得到了回答。我对在 a 中布局小部件特别感兴趣wx.PyControl
如果我需要制作自己的自定义小部件,这项技能可能会很有用。我已经读完了创建自定义控件 http://wiki.wxpython.org/CreatingCustomControls,但它没有在wx.PyControl
子类。
使用下面的代码,我的CustomWidget
只是看起来不太对劲。我还没有做DoGetBestSize
因为我认为这适用于wx.Sizer
acting on一个小部件。我实际上有一个wx.Sizer
做它的事inside a CustomWidget
.
这是我的代码(没有子小部件之间的事件绑定):
EDIT:这是我更正后的类代码,感谢史蒂文·斯普罗特 https://stackoverflow.com/questions/3271639/wxpython-can-a-wx-pycontrol-contain-a-wx-sizer/3272377#3272377:
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()