我想将panel类添加到frame类的sizer中,我将在代码的主行中调用该类。
我得到的错误是TypeError: wx.Window, wx.Sizer, wx.Size, or (w,h) expected for item。我认为这与以下事实有关:它是一个panel类,而不是panel类的实例。
不管怎样,我该如何做这样的事情呢?
代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
class step_1(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, id=wx.ID_ANY)
sizer = wx.BoxSizer(wx.VERTICAL)
txtOne = wx.TextCtrl(self, wx.ID_ANY, "")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(txtOne, 0, wx.ALL, 5)
self.SetSizer(sizer)
class step_2(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, id=wx.ID_ANY)
sizer = wx.BoxSizer(wx.VERTICAL)
txtOne = wx.TextCtrl(self, wx.ID_ANY, "")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(txtOne, 0, wx.ALL, 5)
self.SetSizer(sizer)
class main_frame(wx.Frame):
"""Main Frame holding the main panel."""
def __init__(self,*args,**kwargs):
wx.Frame.__init__(self,*args,**kwargs)
p = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(step_1,0,border = 5)
sizer.Add(step_2,0,border = 5)
p.SetSizerAndFit(sizer)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = main_frame(None,-1,size = (400,300))
app.MainLoop()发布于 2011-05-11 19:26:39
就像您自己说的:您没有将step_1和step_2类的实例传递给sizer,这是理所当然的。只需创建它们的实例:
class main_frame(wx.Frame):
"""Main Frame holding the main panel."""
def __init__(self,*args,**kwargs):
wx.Frame.__init__(self,*args,**kwargs)
p = wx.Panel(self)
stp1 = step_1(p)
stp2 = step_2(p)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(stp1, 0, border = 5)
sizer.Add(stp2, 0, border = 5)
p.SetSizerAndFit(sizer)
self.Show()https://stackoverflow.com/questions/5958531
复制相似问题