Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter-如何在按下按钮时制作弹出框_Python_Tkinter - Fatal编程技术网

Python Tkinter-如何在按下按钮时制作弹出框

Python Tkinter-如何在按下按钮时制作弹出框,python,tkinter,Python,Tkinter,我是Python新手,对自己正在做的事情几乎一无所知。我在问一个与学校项目有关的问题 我决定制作一个基于场景的游戏,比如“选择你自己的冒险”之类的东西,我一直在思考如何在点击时引入另一个可以弹出的框架。这是到目前为止我的程序,我想知道如何引入一个新的弹出框,不是重叠框,而是一个每当按下开始游戏按钮时弹出的框 from tkinter import * from tkinter import messagebox win = Tk() win.title('Survival Game') win.

我是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()

我读过一些关于顶级小部件的文章,但不确定它是什么,也不知道它是如何工作的。我希望能够发现如何将它合并到我已经存在的代码中。

我已经对您的代码进行了更改

我为“开始游戏按钮”添加了一个命令属性。此按钮调用函数“NewWindow”。新建窗口,然后创建另一个窗口(顶级窗口)


如果你“几乎不知道你在做什么”,那么你应该做一个基本的Tkinter教程。@nothing:或者可以先从Python或一般编程教程开始,然后是一本关于事件驱动GUI编程的好书,然后是tk/Tkinter的细节。谢谢Eshita Shukla,它做了它应该做的,我现在可以继续我的项目。建议:这“有助于”问题作者,因为他们可以将你的作品呈现为自己的作品(这无疑违反了他们学术机构关于学术诚信的规定),但不清楚他们会从中学到什么,因为他们不必自己填任何空格。哈弗,我只加了最少三行。关于这件事没什么可学的。但是,我会记住你的建议,也许会修改我的答案。Thanks@Eshita:为什么要用lambda调用
NewPage
command=Newpage
就足够了。@rioV8,很多时候,您可能希望使用如下参数调用函数Newpage:Newpage(x)。在这种情况下,如果不使用command=lambda:NewPage(x),则在创建按钮时将调用函数。但是,您希望在按下按钮后执行该功能。因此,lambda变得很重要。
# 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()