【发布时间】:2020-11-25 15:05:33
【问题描述】:
我在 GUI 的通信之间遇到了问题。我的程序包含一个主界面,该界面创建于
class maininterface():
和其他在不同类中创建的顶级接口:
class Interface_PowerBalance()。主界面控制其他顶级界面。我的问题是我不想将顶级接口的某些属性的信息接收到主界面中并且我没有实现它。
这里是 class maininterface(): 我创建主 GUI 的地方。
class mainInterface():
def __init__(self,root,title):
self.root=root
self.root.title(title)
self.Widgets()
def Widgets(self):
self.PowerBalanceLabel=Label(self.root,text='Power balance is:')
self.PowerBalanceLabel.grid(row=0,column=1)
self.Button_InterfacePowerBalance=Button(root,command=self.PowerBalanceframe)
self.Button_InterfacePowerBalance.grid(column=0,row=0)
def PowerBalanceframe(self):
self.Power=Interface_PowerBalance(self.root,'Power balance interface').PowerBalance()
self.PowerBalanceLabel.config(text='Power balance is: '+str(self.Power))
当我单击self.Buttton_InterfacePowerBalance 时,程序会创建位于class Interface_PowerBalance() 中的顶级接口,并带有以下代码:
class Interface_PowerBalance():
""" This class creates the interface to obtain the power balance """
def __init__(self,root,title):
self.root=root
self.PowerBalanceFrame=Toplevel(self.root)
self.PowerBalanceFrame.title(title)
self.value=DoubleVar()
self.valueList=[]
self.Widget()
def Widget(self):
self.myentry_value = Entry(self.PowerBalanceFrame,textvariable=self.value)
self.myentry_value.grid(row=2,column=2)
self.Button1=Button(self.PowerBalanceFrame, text='Insert a device', command=self.StoreData)
self.Button1.grid(row=0,column=0)
def StoreData(self):
self.valueList.append(self.value.get())
self.PowerBalance()
def PowerBalance(self,*args):
self.Power=float(self.Power)
N=len(self.valueList)
for j in range (0,N):
self.Power=self.Power+float(self.valueList[j])
self.PowerLabel=Label(self.PowerBalanceFrame,text=str(self.Power))
self.PowerLabel.grid(row=6,column=2)
return self.Power
我的程序现在要做的就是在这个顶级界面打开时从class Interface_PowerBalance():接收self.Power属性,并在self.PowerBalanceLabel的主界面中显示它。
我想要做的是从class Interface_PowerBalance():接收self.Power属性每次更改此属性时并将其显示在self.PowerBalanceLabel的主界面中。
我不知道这是否有意义。
谢谢。
【问题讨论】:
标签: python class oop tkinter toplevel