2014-08-27 67 views
0

我有一個腳本,我希望它彈出一個對話框給用戶。一旦用戶輸入文本,窗口將關閉,腳本可以使輸入的文本繼續前進。 我無法獲取文本,它總是空的。我在此基礎上編寫代碼:Get value from Entry after root.destroy()如何從窗口關閉後從python Tkinter條目獲取文本?

如何獲取文本?

#2.7 
from Tkinter import * 

class GetUserInput(Frame): 

    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pathVar = StringVar() 
     self.path = Entry(master, bd =5) 
     self.path.bind('<Return>', self.callback) 
     self.path.pack(side = RIGHT) 

     L1 = Label(master, text="Enter value") 
     L1.pack(side = LEFT) 


    def callback(*args): 
     value = args[0].pathVar.get() 
     print value 
     args[0].master.destroy() 

    def close(self): 
     self.master.destroy() 

if __name__ == '__main__': 
    root = Tk() 
    app = GetUserInput(master=root) 
    app.mainloop() 
    print(app.pathVar.get()) 
+0

代碼的縮進不正確。 – 2014-08-27 15:32:05

+1

理想情況下,您應該也可以使用'self'作爲您的'def callback'方法的參數,然後引用該參數而不是'args [0]'。 – 2014-08-27 15:35:12

回答

2
self.path = Entry(master, bd =5) 

嘗試此處指定textvariable說法。這將確保StringVar保持更新Entry的值。

self.path = Entry(master, bd =5, textvariable=self.pathVar) 
+0

非常好,謝謝! – pogorman 2014-08-27 15:37:00