2016-12-29 30 views
0

我想要創建一個類,該類定義多個變量,設置爲IntVar(),稍後給它們一個值並在Entry小部件內調用它們。在類'__init __(self)中設置IntVar並在該類之外調用IntVar變量

現在我想:

import tkinter as tk 

class ESCP2_Client(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 

     tk.Entry(textvariable=SetVars.var1).pack() 


class SetVars(tk.Tk): 
    def __init__(self): 
     self.var1 = tk.IntVar() 


app = ESCP2_Client() 

vars = SetVars() 
print(vars.var1) 


app.mainloop() 

但這個(顯然?)不工作。但是我不能在__init__函數之前設置變量,因爲IntVar()需要Tk()根。

我該如何回憶其他班級定義的IntVar

+0

爲什麼你需要之前設定值你創建根窗口? –

+0

事實並非如此,我的糟糕之處在於窗口已經創建好了,但Entry小部件中的變量必須可以被多個類和函數訪問。它也可能是全球性的,但我不知道如何以及在哪裏設置全球。我將編輯訂單。 –

回答

1

您需要創建一個SetVars的實例,然後在需要訪問變量的任何地方使用該實例。例如,您可以創建它作爲客戶端的__init__的一部分:

class ESCP2_Client(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.vars = SetVars() 
     tk.Entry(textvariable=self.vars.var1).pack() 

代碼的其他部分可以通過客戶端訪問它們:

print("var1:", app.vars.var1.get()) 
相關問題