一般我们都是在一个Frame显示的时候用self去更改一些窗口上的元素,那么如何在一个Frame显示的时候去改变另一个Frame中的数据呢?
我们可以创建一个GuiManager()类,用以储存Frame,以便后续调用。
class GuiManager():
def __init__(self, ):
self.frameDict = {} # 用来装载已经创建的Frame对象
def addframe(self, id, frame):
self.frameDict[id] = frame
def GetFrame(self, id):
frame = self.frameDict.get(id)
return frame
接下来,在创建Frame时把Frame存进GuiManager中
manager = GuiManager()
login = UserOperation(None, id=1, title="顺北新井运行表", size=(1024, 668))
manager.addframe(0, login)
frame = GaugeFrame(parent=self, id=-1, title='自动化填写', size=(400, 200))
frame.Show()
manager.addframe(1,frame)
这样即时在frame(GaugeFrame)这个Frame中的时候仍可以更改login中的值
login = manager.GetFrame(0)
login.log.SetLabelText(text)
例:更改log的Label