我正在用wxFormBuilder构建一个图形用户界面,并用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对象:
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。因此生成的代码如下所示:
myFlexGridSizer = wx.FlexGridSizer(3,1,0,0)而不是:
self.myFlexGridSizer = wx.FlexGridSizer(3,1,0,0)因此,我无法从任何其他类访问该对象,而我确实需要这样做。
所以..。
self,那么是否有一种方法可以访问另一个类中的对象,即使我直接继承它?self发布于 2013-08-29 07:49:42
如果我很清楚,您想要访问表单生成器生成的FlexGridSizer?
我从未使用过wxFormBuilder,但我认为它的思想是创建一个wxFlexGridSizer,操纵它以完成表单的布局,并在wxWindow上调用SetSizer (或者在您的例子中是wxFrame ),然后忘记它,因为布局不会再改变了。
一个简单的选择(但这不是最好的)是在您的帧上调用GetSizer,然后您可以从那里访问一个wxSizer。
另一个选择是在您的sizer中有一个特定的MyFrame成员,您将在其中存储wxFlexGridSizer,但这可能涉及更改由wxFormBuilder生成的代码。
https://stackoverflow.com/questions/18499256
复制相似问题