То, что вы просите, для всех намерений и целей невозможно. Функция DoThis
вернется до того, как на экране появится графический интерфейс.
Как говорится, такая вещь возможна, хотя и весьма необычна. Это все равно, что спросить, как вы можете перевезти тюк сена через грязное поле в Ferrari.
Если вы просто планируете открыть окно один раз, вы можете получить что-то вроде следующего:
import Tkinter as tk
class MyApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.entry = tk.Entry(self)
self.entry.pack()
close_button = tk.Button(self, text="Close", command=self.close)
close_button.pack()
self.string = ""
def close(self):
global result
self.string = self.entry.get()
self.destroy()
def mainloop(self):
tk.Tk.mainloop(self)
return self.string
print "enter a string in the GUI"
app = MyApp()
result = app.mainloop()
print "you entered:", result
Если вы собираетесь открывать окно более одного раза, вам, вероятно, не повезет, потому что, опять же, это не то, как Tkinter предназначен для использования.