在我的wxpython程序中,我的面板的行为有所不同,具体取决于我是将其设为派生类还是直接面板实例:
import wx
class PanelWithText(wx.Panel):
def __init__(self, parent):
super(PanelWithText, self).__init__(parent)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
panel1 = wx.Panel(parent)
st1 = wx.StaticText(panel1, label='Some Text')
hbox1.Add(st1)
class Example(wx.Frame):
def __init__(self, parent, title):
super(Example, self).__init__(parent, title=title,
size=(390, 350))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL) # comment out from here
panel1 = wx.Panel(panel) #
st1 = wx.StaticText(panel1, label='Some Text') #
hbox1.Add(st1) # to here
# panel1 = PanelWithText(panel)
vbox.Add(panel1)
panel.SetSizer(vbox)
self.Centre()
self.Show()
if __name__ == '__main__':
app = wx.App()
Example(None, title='Example')
app.MainLoop()
如果我按原样运行,它看起来很好 . 如果我运行它注释掉创建panel1的四行并取消注释使用派生类创建panel1的行,则“Some Text”将被剪切并仅显示“Sor” . 当我做一个非平凡的计划时,更糟糕的事情开始发生 .
这两个看起来和我一模一样 . 有什么不同?
我正在使用:Python 2.7.6 wxpython 3.0.0.0 Mac Yosemite 10.10.2
1 回答
问题在于养育子女 . 问题是在第一个示例中,您将
StaticText
窗口小部件的父设置正确设置为panel1
. 在PanelWithText
类中,将其父级设置为顶级面板而不是面板类,这是不正确的 . 这是一个固定的例子: