【发布时间】:2011-03-17 08:16:07
【问题描述】:
wx.PyControl 可以包含wx.Sizer 吗?
请注意,我最终在这里尝试做的事情(带有浮点值的微调器)已经在另一个问题中得到解答。我对在wx.PyControl 中布局小部件特别感兴趣,如果我遇到需要制作自己的自定义小部件时,这项技能可能会很有用。我已经阅读了CreatingCustomControls,但它没有在wx.PyControl 子类中使用sizer。
使用下面的代码,我的CustomWidget 看起来不正确。我还没有做DoGetBestSize,因为我认为这适用于wx.Sizer 作用于 小部件。我实际上有一个 wx.Sizer 在 inside 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()
【问题讨论】:
标签: python wxpython custom-controls widget sizer