2017-04-13 4 views
0

GUI를 통해 사용자에게 영화를 추천하는 프로젝트를 진행 중입니다. 그러나 저는 Python과 tkinter에 익숙하지 않고 함수와 변수를 함수에 호출하는 데 어려움을 겪고 있습니다. 테스트 도구로 두 개의 Entry 위젯을 콘솔에 출력하려고합니다. 난 꽤 다른 접근 방식을 시도했지만 뭔가 항상 잘못 될 것으로 보인다. 필자는 preifixes App.self.하지만 어느 작업을 시도콘솔에 '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 분명히 인쇄하기 호출되지 않는 : 다음은이 시험에 대한 관련 코드입니다. 누군가가 이러한 변수를 호출하기 위해해야 ​​할 일을 나에게 알려 줄 수 있습니까? 고맙습니다.

답변

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