2017-04-13 63 views
0

我正在通過GUI向一個向用戶推薦電影的項目工作。不過,我對python和tkinter很陌生,一般都在調用函數和變量來掙扎,作爲一個測試,我想將兩個Entry小部件打印到控制檯。我嘗試了很多不同的方法,但總是出現問題。下面是本次測試的相關代碼:打印'Entry'小部件輸入到控制檯

class App(Frame): 
    def print_it(self): 
     print(mn, nr) 

    def __init__(self, master): 
     Frame.__init__(self, master) 
     self.filename = None 
     movie_name = Entry(master) 
     movie_name.grid() 
     movie_name.delete(0, END) 
     movie_name.insert(0, "Enter Movie Name") 
     mn = movie_name.get() 
     num_recs = Entry(master) 
     num_recs.grid() 
     num_recs.delete(0, END) 
     num_recs.insert(0, "Enter Number of Movies") 
     nr = num_recs.get() 
     button1 = Button(self, text="Start", command=self.print_it) 
     button2 = Button(self, text="Exit", command=master.destroy) 
     button1.grid() 
     button2.grid() 
     self.grid() 

root = Tk() 
root.title("Recommender") 
root.geometry("500x500") 
app = App(root) 
root.mainloop() 

變量nrmn顯然不會被調用打印它,我已經試過preifixes App.self.但既不工作。有人可以指示我需要做什麼來調用這些變量。謝謝。

回答

0

好的開始。

首先,如果你想從不同的方法訪問一個變量,它需要用'self'命名。字首。

其次,__init__方法在啓動時運行,所以如果您調用movie_name.get()它將在啓動時獲取該值。你需要它按下按鈕時的值(我假設),所以你需要將get()調用移動到按鈕被按下時調用的方法中。

第三,條目在第一次初始化時爲空,您不需要使用delete方法清除它。

class App(Frame): 
    def print_it(self): 
     print(self.movie_name.get(), self.num_recs.get()) 

    def __init__(self, master): 
     Frame.__init__(self, master) 
     self.filename = None 
     self.movie_name = Entry(master) 
     self.movie_name.grid() 
     self.movie_name.insert(0, "Enter Movie Name") 
     self.num_recs = Entry(master) 
     self.num_recs.grid() 
     self.num_recs.insert(0, "Enter Number of Movies") 
     button1 = Button(self, text="Start", command=self.print_it) 
     button2 = Button(self, text="Exit", command=master.destroy) 
     button1.grid() 
     button2.grid() 
     self.grid() 

root = Tk() 
root.title("Recommender") 
root.geometry("500x500") 
app = App(root) 
root.mainloop() 
+0

謝謝,這實際上填補了一些空白,非常有用 – Keegan