gpt4 book ai didi

Python Tkinter。仅显示一个窗口副本

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:35 26 4
gpt4 key购买 nike

我有一个问题。我有在 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()

所以我可以点击“关于”标签,然后会看到窗口:

enter image description here

但是在 Tkinter 中是否可以禁用同一窗口的任何下一次启动?

enter image description here

我试过这个 https://stackoverflow.com/a/24886806/2971192但没有成功。

最佳答案

一种方法是让子窗口暂时进入根窗口,这样在子窗口关闭之前您无法与根窗口交互(此处不需要 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。仅显示一个窗口副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29233029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com