我对Python还是很陌生,对自己的工作几乎一无所知。我在问一个与学校项目有关的问题。
我决定制作一款基于场景的游戏,例如“选择自己的冒险”之类的游戏,并且对如何引入单击时会弹出的另一帧感到困惑。到目前为止,这是我的程序,我想知道如何引入一个新的弹出框,而不是一个重叠的框,而是当按下开始游戏按钮时弹出的框。
from tkinter import *
from tkinter import messagebox
win = Tk()
win.title('Survival Game')
win.geometry("500x500")
win.resizable(0,0)
win.config(bg = 'deep sky blue', cursor='pirate')
l = Label (win, fg = 'yellow', bg = 'deep sky blue', font=('Chinyen',24),text = 'Welcome to Survival')
l.pack_propagate(0)
l.pack(side = TOP)
a1=Button(win, text = ('Start Game'),font =('Chinyen', 15),bg='grey',fg='yellow', height=2, width=30)
a1.pack(pady=50)
def Quit():
answer = messagebox.askokcancel('Quit', ' Are you sure?')
if answer:
win.destroy()
a2=Button(win, text = ('Exit'), font =('Chinyen', 15), bg='grey',fg='yellow',height=2,width=30, command = Quit)
a2.pack()
win.mainloop()
我已经阅读了有关TopLevel小部件的内容,但是不确定它是什么并且不知道它是如何工作的。我希望发现如何将其合并到我现有的代码中。
答案 0 :(得分:0)
我已经对您的代码进行了更改。
我为“开始游戏按钮”添加了命令属性。该按钮调用函数“ NewWindow”。 NewWindow,然后创建另一个窗口(顶层窗口)。
# New window creation
from tkinter import *
from tkinter import messagebox
win = Tk()
win.title('Survival Game')
win.geometry("500x500")
win.resizable(0,0)
win.config(bg = 'deep sky blue', cursor='pirate')
l = Label (win, fg = 'yellow', bg = 'deep sky blue', font=('Chinyen',24),text = 'Welcome to Survival')
l.pack_propagate(0)
l.pack(side = TOP)
def NewPage():
print("New Page")
win2 = Toplevel(win)
win2.title('Survival Game')
win2.geometry("500x500")
win2.resizable(0,0)
win2.config(bg = 'red', cursor='pirate')
label1 = Label(win2, font =('Chinyen', 15),bg='grey',fg='yellow', height=2, width=30, text="New Window").grid()
win2.mainloop()
a1=Button(win, text = ('Start Game'),font =('Chinyen', 15),bg='grey',fg='yellow', height=2, width=30, command=lambda:NewPage())
a1.pack(pady=50)
def Quit():
answer = messagebox.askokcancel('Quit', ' Are you sure?')
if answer:
win.destroy()
a2=Button(win, text = ('Exit'), font =('Chinyen', 15), bg='grey',fg='yellow',height=2,width=30, command = Quit)
a2.pack()
win.mainloop()