【发布时间】:2018-10-24 02:48:56
【问题描述】:
我有一个按钮可以在我的代码上打开一个新窗口,我一直在尝试让该按钮打开一个名为“newest_release_window”的新窗口,并考虑到两件事:
- 如果“newest_release_window”没有打开,打开窗口。
- 如果“newest_release_window”已打开,请将焦点设置在所述窗口上,但不要打开新窗口。
不幸的是,它变得太复杂了,我一生都无法弄清楚如何去做。问题是我无法让代码检测“newest_release_window”是否打开,并据此更改变量。
welcome_window = Tk()
welcome_window.title("Games R Us")
welcome_window.geometry("360x350")
welcome_window.configure(bg = "gold")
currentDisplay = 10
newest_release_windowtracker = 0
gui_font_5 = ("Helvetica", 5, "bold")
gui_font_10 = ("Helvetica", 10, "bold")
gui_font_15 = ("Helvetica", 15, "bold")
gui_font_20 = ("Helvetica", 20, "bold")
space_between = (5)
button_variable = IntVar()
def newwindow_newest_release():
global newest_release_windowtracker
newest_release_window = Tk()
newest_release_window.title("Games R Us")
newest_release_window.geometry("360x350")
newest_release_window.configure(bg = "greenyellow")
currentDisplay = 10
display = Label(newest_release_window, text="Humm, see a new window !",
bg ="limegreen")
display.pack()
newest_release_window.withdraw()
if newest_release_windowtracker == 0:
newest_release_window.deiconify()
newest_release_windowtracker = 1
elif newest_release_windowtracker == 1:
newest_release_window.focus_set()
elif newest_release_window.winfo_exists == 0:
newest_release_window = Tk()
ww_newest_release = Button(welcome_window,
text = "Newest Release", bg = "goldenrod", font = "Helvetica 10",
width = 12, command = newwindow_newest_release)
注意:这不是完整的代码,我只是抓住了最重要的部分来说明问题可能是什么。
【问题讨论】:
-
我没有仔细检查你的代码,但我看到你在
newwindow_newest_release中有newest_release_window = Tk()。该调用不仅创建了根窗口,还创建了执行所有 Tkinter 操作的 Tcl 解释器,而您真的不想要其中的一个。 -
而不是使用
Tk()使新窗口使用Toplevel()。Tk()只能在 tkinter 中使用一次。Toplevel()是创建根窗口后创建新窗口的正确方法。
标签: python python-3.x tkinter tk