2017-10-03 5 views
1

내가 만든 엔트리 포인트에 입력 된 값을 반환하는 데 약간의 문제가 있으며 그 이유를 모르겠습니다.tkinter 값을 되 돌리는 중

class DbGui: 
    def __init__(self, master): 
     self.master = master 
     self.label = ttk.Label(master, text="Tkinter DB File-r") 
     self.label.grid(row=0, column=0, columnspan=2) 
     ttk.Button(master, text="Connect", command=self.connect).grid(row=1, column=0) 
     ttk.Button(master, text="Disconnect", command=self.disconnect).grid(row=1, column=1) 
     ttk.Button(master, text="Submit", command=self.tk_submit).grid(row=1, column=2) 
     ttk.Button(master, text="Exit", command=self.tk_exit).grid(row=6, column=3) 

    def show_inputs(self): 
     # Name 
     ttk.Label(self.master, text="Name").grid(row=2, column=0) 
     name = ttk.Entry(self.master).grid(row=2, column=1) 

     # Date 
     ttk.Label(self.master, text="Date").grid(row=3, column=0) 
     date = ttk.Entry(self.master).grid(row=3, column=1) 
     # Value 
     ttk.Label(self.master, text="Value").grid(row=4, column=0) 
     value = ttk.Entry(self.master).grid(row=4, column=1) 
     return name, date, value 

    def tk_submit(self): 
     print(name.get()) # This is where I think the problem is. 

def main(): 
    root = Tk() 
    app = DbGui(root) 
    app.show_inputs() 
    root.mainloop() 


if __name__ == '__main__': 
    main() 

사용자가 변수 나 목록 등을 채우려면 어떻게 입력해야합니까? 나는 VERY tkinter에 새로운 것이므로 어떤 조언이나 도움을 주시면 감사하겠습니다.

self.name = ttk.Entry(self.master) 
self.name.grid(row=2, column=1) 

과 : -

+2

가능한 복제 [없음 tkinter.Entry 객체 대신 반환되지 않습니다 왜 (https://stackoverflow.com/q/6933572/953482). 짧은 대답 : 위젯을 만들고 두 개의 별도 라인에'grid'를 호출하십시오. – Kevin

답변

3

있습니다 (감사 @MikeSMT을 gridNone을 반환하지 않습니다) 별도의 행에 self.name에 (self.로 시작) 클래스의 속성 및 통화 그리드로 변수 name를 초기화해야합니다 같은 호출 :의

def tk_submit(self): 
    print(self.name.get()) 
+3

이 작동하지 않습니다. 그리드를 별도의 선으로 선언해야합니다. –

+1

감사합니다 마이크, 나는 당신이 게시 - 동시에 그것을 보았다. –

+0

당신은 그것을 결국 알게 될 것입니다. 내 의견은 Just in case. :) –

관련 문제