我有一个问题.我有在Tkinter上写过的程序.
import Tkinter as tk
import ttk
def about_window():
print(root.child_window)
if not root.child_window:
top2 = tk.Toplevel(root)
top2.title("About")
top2.resizable(0,0)
explanation = "This program is my test program"
ttk.Label(top2,justify=tk.LEFT,text=explanation).pack(padx=5,pady=2)
ttk.Button(top2,text='OK',width=10,command=top2.destroy).pack(pady=8)
root = tk.Tk()
root.resizable(0,0)
root.child_window = None
#print(root.child_window)
root.style = ttk.Style()
# ('clam', 'alt', 'default', 'classic')
root.style.theme_use("clam")
menu = tk.Menu(root)
root.config(menu=menu)
fm = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="Settings",menu=fm)
fm.add_command(label="Preferances")
hm = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="Help",menu=hm)
hm.add_command(label="About", command=about_window)
hm.add_command(label="Exit",command=root.quit)
#
tk.mainloop()
所以我可以点击“关于”标签,然后会看到窗口:
但是在Tkinter中是否可以禁用同一窗口的任何下一次启动?
我试过这个https://stackoverflow.com/a/24886806/2971192,但没有成功.
解决方法:
一种方法是让子窗口瞬态到根,这样在子关闭之前你不能与root交互(你不需要root.child_window):
import Tkinter as tk
import ttk
def about_window():
top2 = tk.Toplevel(root)
top2.title("About")
top2.resizable(0,0)
explanation = "This program is my test program"
ttk.Label(top2,justify=tk.LEFT,text=explanation).pack(padx=5,pady=2)
ttk.Button(top2,text='OK',width=10,command=top2.destroy).pack(pady=8)
top2.transient(root)
top2.grab_set()
root.wait_window(top2)
root = tk.Tk()
root.resizable(0,0)
root.style = ttk.Style()
# ('clam', 'alt', 'default', 'classic')
root.style.theme_use("clam")
menu = tk.Menu(root)
root.config(menu=menu)
fm = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="Settings",menu=fm)
fm.add_command(label="Preferances")
hm = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="Help",menu=hm)
hm.add_command(label="About", command=about_window)
hm.add_command(label="Exit",command=root.quit)
#
tk.mainloop()
标签:python,tkinter 来源: https://codeday.me/bug/20190715/1466500.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。