2015-12-30 419 views
-1
class FCMenu: 
def __init__(self,master): 
    frame=Frame(master) 
    frame.pack() 
    Label(frame, text="What is the number?").grid(row=0) 
    self.num = IntVar() 
    self.entry = Entry(frame,textvariable=self.num).grid(row=1) 
    button = Button(frame, text="Factorize", command=self.calc).grid(row=2) 
    self.resultvar = StringVar() 
    Label(frame, textvariable=self.resultvar).grid(row=3) 

def calc(self): 
    e = int(self.entry.get()) 
    print(e,self.num.get()) 
    ... 

我想用tkinter創建一個Python GUI,如上所示。但是,每次我在條目或文本變量上調用.get()時,都會失敗。通過條目本身,它解釋了NoneType沒有.get()函數。如果我刪除它並僅使用self.num.get(),則它將打印0或0.0,具體取決於是否將其轉換爲整數。如果我將self.num設置爲StringVar,則不會打印任何內容。簡而言之,我無法找到獲取我想要檢索的輸入的方法。Tkinter - Entry .get()函數

回答

0

製作了代碼的簡化版本,並且在Entry小部件發生更改時正確打印。你的代碼中的其他地方可能會出錯?或錯誤的縮進?下面是我測試(這是2.7的代碼,但有3.5版本的代碼也工作)的代碼:它來自self.num.get()self.entry.get()打印

import Tkinter as tk 

class FCMenu: 
    def __init__(self, master): 
     frame = tk.Frame(master) 

     self.num = tk.IntVar() 
     self.entry = tk.Entry(frame, textvariable=self.num) 
     self.button = tk.Button(frame, text='Calc', command=self.calc) 

     frame.pack() 
     self.entry.pack() 
     self.button.pack() 

    def calc(self): 
     print(self.num.get(), self.entry.get()) 

root = tk.Tk() 
frame = FCMenu(root) 
root.mainloop() 

。第一個是Int,第二個是String

+0

非常感謝!看起來網格是問題,因爲你的.pack()解決方案完美工作。 – StardustGogeta

+0

很好,你得到它的工作。我認爲混合包和網格可能會導致問題,現在你提到它。就我個人而言,我只使用Grid作爲我製作的GUI,從未嘗試過將它們混合。我只用於快速測試。 –