wxFormBuilder with Python:从子类访问FlexGridSizer

2024-09-19 23:41:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用wxFormBuilder构建一个GUI,并用Python编写代码。在

我注意到,我构建的所有小部件都分配给生成的代码中的self。例如,包含一段文本的GUI可能看起来像:

class MyFrame(wx.Frame):
    def __init__(self,parent):
        wx.Frame.__init__(self,parent)
        self.myStaticText = wx.StaticText(self,wx.ID_ANY,'My Text',0)

因此对象myStaticText成为MyFrame类的属性。这很好,因为我可以编写一个继承这个类的新类,然后执行其他函数,例如更新myStaticText对象:

^{pr2}$

问题是wxFormBuilder没有在任何FlexGridSizer对象前面附加一个self。因此生成的代码看起来像:

myFlexGridSizer = wx.FlexGridSizer(3,1,0,0)

而不是:

self.myFlexGridSizer = wx.FlexGridSizer(3,1,0,0)

因此,我不能从任何其他类访问该对象,这是我真正需要做的。在

所以。。。在

  1. 如果另一个类前面没有self,即使我直接继承它,有没有办法从另一个类访问它?在
  2. 有没有一种方法可以更改wxFormBuilder中的设置,使其附加self?在

Tags: 对象代码文本selfinit部件guiframe
1条回答
网友
1楼 · 发布于 2024-09-19 23:41:18

如果我理解得很好,您想访问表单生成器生成的FlexGridSizer?在

我从未使用过wxFormBuilder,但我认为它的想法是它创建一个wxFlexGridSizer,操作它来完成表单的布局,并在你的wxWindow(或者在你的例子中是wxFrame)上调用{},然后忘记它,因为布局不会再改变了。在

一个简单的选择(但不是最好的)是在你的框架上调用GetSizer,你可以从那里访问wxSizer。在

另一个选择是在MyFrame中有一个特定的sizer成员,在这里您将存储wxFlexGridSizer,但这可能涉及到更改{}生成的代码

相关问题 更多 >