我想在GUI类之间传递变量。下面,当我显示其他类时,它显示frame,但我无法将Main1 class的数据放到那里。但是,当我试图显示其他类时,它传递了x值(因为它在\uuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我怎样才能克服这个问题?任何帮助都将不胜感激
import wx
class Main1 (wx.Frame):
def __init__(self,parent):
wx.Frame.__init__ ( self, parent )
self.bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.Btn1 = wx.Button( self, wx.ID_ANY, u"Btn1", wx.DefaultPosition, wx.DefaultSize, 0 )
self.bSizer1.Add( self.Btn1, 1, wx.ALL|wx.EXPAND, 5 )
self.SetSizer( self.bSizer1 )
self.Btn1.Bind( wx.EVT_BUTTON, self.btn1_f )
def btn1_f( self, event ):
print("here 1")
self.x = 12
self.y = 30
a=Other_a(self).Show()
b=Other_b(self).Show()
class Other_a (wx.Frame):
def __init__(self, foo):
wx.Frame.__init__ ( self )
self.bSizer2 = wx.BoxSizer( wx.VERTICAL )
self.Btn2 = wx.Button( self, wx.ID_ANY, u"Btn 2", wx.DefaultPosition, wx.DefaultSize, 0 )
self.bSizer2.Add( self.Btn2, 0, wx.ALL|wx.EXPAND, 5 )
self.SetSizer( self.bSizer2 )
self.Btn2.Bind( wx.EVT_BUTTON, self.btn2_f )
print("here 2")
print(foo.x)
def btn2_f(self,foo):
print("here 3")
print(foo.y)
class Other_b (wx.Frame):
def __init__(self,parent):
wx.Frame.__init__ ( self, parent )
self.bSizer3 = wx.BoxSizer( wx.VERTICAL )
self.Btn3 = wx.Button( self, wx.ID_ANY, u"Btn 2", wx.DefaultPosition, wx.DefaultSize, 0 )
self.bSizer3.Add( self.Btn3, 0, wx.ALL|wx.EXPAND, 5 )
self.SetSizer( self.bSizer3 )
self.Btn3.Bind( wx.EVT_BUTTON, self.btn3_f )
print("here 4")
def btn3_f(self,event):
print("here 5")
print(self.x)
if __name__ == "__main__":
app = wx.App(False)
frame = Main1(None)
frame.Show(True)
app.MainLoop()
你很接近
一些明智的使用
self
和parent
可以解决您的问题提供:
下面是您的代码和上面代码之间的
diff
:我稍微整理了一下您的代码,现在它将变量从Main1类传递到其他类
主要的问题是根本没有传递变量。代码中的
a=Other_a(self).Show()
行实际上是将整个frame
赋给了Other_a
类。如果要传递x
和y
值,则可以给出一个列表[self.x, self.y]
作为Other_a
的foo
值然后,在类
Other_a
的实例a
中,需要一行self.foo = foo
。为什么?因为您想在__init__
方法之外使用foo
的值同样的情况也发生在
b
和Other_b
上查看here和here以了解有关clases如何在Python中工作的更多详细信息
相关问题 更多 >
编程相关推荐