我目前正在实施一个程序,使用许多tkinter帧,而子帧正在打开,我想为用户锁定超帧(否则的东西不会工作)。经过一番研究,我发现grab_set和grab_release方法工作得很好。Tkinter焦点丢失后询问
但是,一旦子帧(由Toplevel实例化)调用askstring,抓取就会“失去”,用户可以再次与超级窗口进行交互。一旦用户通过单击“ASDF”包含帧“ASDF”将同时的子帧被打开锁定的持续时间打开该子帧
import tkinter as tk
import tkinter.simpledialog
root = tk.Tk()
def open_sublevel():
tl = tk.Toplevel(root)
def ask():
print(tk.simpledialog.askstring("askstring", "askstring"))
tk.Button(tl, text="ask", command=ask).pack()
tl.grab_set()
root.wait_window(tl)
tl.grab_release()
print("release")
tk.Button(root, text="asdf", command=open_sublevel).pack()
tk.mainloop()
:一个例子是这样(非常简化的代码)。然而,一旦用户在子帧中选择“询问”按钮,该“锁定”以某种方式消失。
请提供[MCVE]。这也可能有助于了解您正在使用的平台。 –
那么最小的例子不是那么简单......我将不得不发布所有模块和子模块,因为它是可验证的,因为超级模块导入了我编写的各种其他模块。 – PfannkuchenXD
我尽可能简化它,并将代码发布到原始文章(可在每个python 3.X上编译)。我正在使用Windows10。 – PfannkuchenXD