【发布时间】:2021-10-08 03:53:25
【问题描述】:
在下面的代码中,我通过每次按下特定按钮时打开定义的窗口来进行简单的路线引导,例如)主菜单 -> 教室楼层 -> 教室编号。
我正在尝试制作一个“主页”按钮,该按钮将关闭所有打开的窗口,除了第一个写有 WELCOME 的主菜单窗口。
例如,在我按下 btn7, btn702, 之后,我打开了 4 个窗口。我想添加一个“主页”按钮,它将关闭 3 个新打开的窗口并使第一个窗口保持活动状态。我怎样才能做出这种按钮?
from os import system
from tkinter import *
from PIL import ImageTk, Image
mainmenu = Tk()
mainmenu.title("CAU 310 GUIDE MAP")
mainmenu.geometry("1280x800+0+0")
canvas = Canvas(mainmenu, width = 1280, height = 800)
canvas.pack(fill='both', expand = True)
canvas.create_text(640, 250, text = 'WELCOME', font=times 45)
btnclassroom = Button(mainmenu, padx=5, pady=5,text="Classroom", font="times 30", command=selectfloor)
btnclassroom.place(x=140, y=570)
def selectfloor():
mainmenu = Tk()
mainmenu.title("DESTINATION")
mainmenu.geometry("1280x800+0+0")
mainmenu.config(bg='white')
canvas = Canvas(mainmenu, width = 1280, height = 800)
canvas.pack(fill='both', expand = True)
canvas.create_text(640, 150, text = 'Select floor of classroom', font='Arial 40')
btn7=Button(mainmenu, padx=4, pady=4, text="7F", font="Arial 42 bold", command=floor7)
btn7.place(x=160-5, y=490)
def floor7():
mainmenu = Tk()
mainmenu.title("FLOOR 7")
mainmenu.geometry("1280x800+0+0")
canvas = Canvas(mainmenu, width = 1280, height = 800)
canvas.pack(fill='both', expand = True)
canvas.create_text(640, 150, text = 'Select classroom No.', font='Arial 40')
btn702=Button(mainmenu, padx=3, pady=3, text="No.702", font="Arial 38 bold", command=room702)
btn702.place(x=100+220*1, y=240)
mainmenu.mainloop()
def room702():
mainmenu = Tk()
mainmenu.title("Elevator 1")
mainmenu.geometry("1280x800+0+0")
lobby = ImageTk.PhotoImage(Image.open("1F_elevator1.jpg"), master=mainmenu)
canvas = Canvas(mainmenu, width = 1280, height = 800)
canvas.pack(fill='both', expand = True)
canvas.create_image(0, 0, image=lobby,anchor = "nw")
mainmenu.mainloop()
mainmenu.mainloop()
**我一直在谷歌搜索这类问题,我想我已经得到了将“selectfloor”、“floor7”、“room702”窗口作为儿童小部件的提示。但我仍然不确定如何实现它。
【问题讨论】:
-
您是否尝试过简单地创建所有窗口的列表,然后销毁除第一个窗口之外的所有窗口?
-
创建所有窗口的列表是什么意思??
-
我的意思是,从字面上创建一个列表,并将窗口保存到该列表中。
-
不,您不必按每个窗口上的按钮。您只需跨过列表,对列表中的每个项目调用
destroy方法。 -
但是我将不得不按下每个窗口上的按钮来销毁它。我一直想做的是在第 4 个窗口上按下“主页”按钮来破坏第 2 到第 4 个窗口并让第一个窗口保持活动状态。我一直在寻找可以让我做到这一点的特定功能