2014-08-27 9 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

Отказ в коде неверен. –

+1

В идеале, вероятно, вы также должны использовать 'self' в качестве параметра для вашего метода def defback, а затем ссылаться на него вместо' 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

 Смежные вопросы

  • Нет связанных вопросов^_^