首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxFormBuilder with Python:从子类访问FlexGridSizer

wxFormBuilder with Python:从子类访问FlexGridSizer
EN

Stack Overflow用户
提问于 2013-08-28 22:22:19
回答 1查看 880关注 0票数 0

我正在用wxFormBuilder构建一个图形用户界面,并用Python为其编写代码。

我注意到,我构建的所有小部件都在生成的代码中分配给self。例如,带有单个文本的GUI可能如下所示:

代码语言:javascript
复制
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对象:

代码语言:javascript
复制
import MyFrmae
class GUI(MyFrame):
    def __init_(self,parent):
        MyFrame.__init__(self,parent)

    def updateText(self):
        self.staticText.SetLabel('My Other Text')

问题是wxFormBuilder没有在任何FlexGridSizer对象前面附加self。因此生成的代码如下所示:

代码语言:javascript
复制
myFlexGridSizer = wx.FlexGridSizer(3,1,0,0)

而不是:

代码语言:javascript
复制
self.myFlexGridSizer = wx.FlexGridSizer(3,1,0,0)

因此,我无法从任何其他类访问该对象,而我确实需要这样做。

所以..。

  1. 如果对象前面没有self,那么是否有一种方法可以访问另一个类中的对象,即使我直接继承它?
  2. 是否有一种方法可以更改wxFormBuilder中的设置,使其能够附加self
EN

回答 1

Stack Overflow用户

发布于 2013-08-29 07:49:42

如果我很清楚,您想要访问表单生成器生成的FlexGridSizer

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

一个简单的选择(但这不是最好的)是在您的帧上调用GetSizer,然后您可以从那里访问一个wxSizer

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18499256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档