2017-05-29 57 views
1

我试图获取输入到在类中设置的tkinter Entry窗口小部件的值。我可以使用attribute.get()来检索小部件不在类中时的值,但我不确定如何在类中调用它。Python - 从单独的类中的tk输入框中检索值

我收到的错误是:

File "C:/Users/ABour/Python Scripts/test/PassVarSX.py", line 12, in Enter_Inputs 
    xf_In = int(self.e_xf.get()) 
AttributeError: 'StartPage' object has no attribute 'e_xf' 

包含插件的类被称为StartPage和小部件被称为e_xf,使用.get()函数被调用Enter_Inputs

预先感谢您的帮助,我在Spyder上运行,Python v3.6

import tkinter as tk 
from tkinter import ttk 

LARGE_FONT= ("Verdana", 12) 

def To_Print(self): 
    xf = Enter_Inputs(self,'xf') 
    print('xf = ', xf) 

def Enter_Inputs(self,x): # Enter inputs from values typed in 

     xf_In = int(self.e_xf.get()) 

     if x == 'xf': 
      x = float(xf_In)/100 

     return x 


class TestApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 

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

     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand = True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 

     frame = StartPage(container, self) 

     self.frames[StartPage] = frame 

     frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(StartPage) 

    def show_frame(self, cont): 

     frame = self.frames[cont] 
     frame.tkraise() 


class StartPage(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self,parent) 


     label = ttk.Label(self, text="Start Page", font=LARGE_FONT) 
     label.grid(row=0, columnspan = 2) 


     l_xf = tk.Label(self, text="% xA of Feed") 
     l_xf.grid(row=1) 

     e_xf = tk.Entry(self) 
     e_xf.grid(row=1, column=1) 


     b_run = tk.Button(self, text="Click to Run", command=lambda: To_Print(self)) 
     b_run.grid(row=2, column=0, columnspan = 2) 


app = TestApp() 
app.mainloop() 

回答

0

当你p屁股自我To_Print方法,你想从自己调用e_xf字段,你应该声明e_xf作为类的数据成员。

您可以通过简单地改变行

self.e_xf = tk.Entry(self) 
self.e_xf.grid(row=1, column=1) 

通过该e_xf是一个实例成员做到这一点,你应该能够从Enter_Inputs函数调用它。

+0

谢谢,完美的作品! –

+0

请问[接受答案](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)是否解决了你的问题:) –