等待用户输入的方法是打开一个对话框。模式对话框将强制用户关闭该对话框,非模式对话框将允许用户继续使用主应用程序。在
在您的例子中,您可以使用Toplevel创建一个对话框,并用您想要的任何小部件填充它,然后使用wait_window函数等待该窗口被销毁。为了使它成为模态,你可以在顶层创建一个“抓取”。为了简单起见,我在下面的示例中没有这样做。在
这是一个基本的例子。关键是对wait_window的调用,在对话框被破坏之前,它不会返回。在import tkinter as tk
class CustomDialog(object):
def __init__(self, parent, prompt="", default=""):
self.popup = tk.Toplevel(parent)
self.popup.title(prompt)
self.popup.transient(parent)
self.var = tk.StringVar(value=default)
label = tk.Label(self.popup, text=prompt)
entry = tk.Entry(self.popup, textvariable=self.var)
buttons = tk.Frame(self.popup)
buttons.pack(side="bottom", fill="x")
label.pack(side="top", fill="x", padx=20, pady=10)
entry.pack(side="top", fill="x", padx=20, pady=10)
ok = tk.Button(buttons, text="Ok", command=self.popup.destroy)
ok.pack(side="top")
self.entry = entry
def show(self):
self.entry.focus_force()
root.wait_window(self.popup)
return self.var.get()
要使用它,请调用show方法:
^{pr2}$
在上面,result将有您输入的字符串。在
有关创建对话框的详细信息,请参见effbot站点上的Dialog Windows