gpt4 book ai didi

python - 将 wxpython 面板类添加到 sizer

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:10 26 4
gpt4 key购买 nike

我想将面板类添加到我将在代码主行中调用的框架类中的 sizer。

我得到的错误是 TypeError: wx.Window, wx.Sizer, wx.Size, or (w,h) expected for item。我认为这与它是面板类而不是面板类的实例这一事实有关。

不管怎样,我该怎么做呢?

代码如下:

#!/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()

最佳答案

就像您自己说的:您没有将 step_1step_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()

关于python - 将 wxpython 面板类添加到 sizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com