我正在使用一个函数来创建一个新窗口(例如Gui2 = Tk()
)然后我需要在另一个函数中使用Gui2
,但它没有被定义。
这是一款数学游戏
有一个主菜单,有2个困难,简单和努力。
在主菜单之后它会打开一个新窗口(这是在一个名为gui_setup
的函数内完成的。
请忘记任何其他错误,代码是正在进行的工作。
我猜我需要根(Gui2
)全局?
但是当我这样做时,程序没有打开窗口。
from tkinter import *
import random as r
n1 = 0
n2 = 0
answer = 0
lives = 0
def main_Gui_setup():
mGui.title("Meh Maths Game")
mGui_label = Label(mGui,text="Please choose a diffiulty").pack()
mGui.geometry("240x160")
easy_button = Button(mGui,text="Easy",command=easy).pack()
hard_button = Button(mGui,text="hard",command=hard).pack()
def Gui2_setup(x):
Gui2 = Tk() #Here's the problem(I know it should be indented)
Gui2.title("Meh Maths Game")
Gui2_label = Label(text=("{0} Mode").format(x))
Gui2.geometry("240x160")
mEntry = Entry(Gui2,textvariable=ment).pack()
mbutton = Button(Gui2, text = 'OK',command = handle_answer).pack()
def easy():
mGui.destroy()
Gui2_setup("Easy")
global lives
lives = 3
while lives > 0:
generate_question(0,100)
mlabel = Label(Gui2,text=("{0}+{1}=").format(n1,n2)).pack()
def hard():
mGui.destroy()
Gui2_setup("Hard")
global lives
lives = 1
while lives > 0:
generate_question(0,1000)
mlabel = Label(Gui2,text=("{0}+{1}=").format(n1,n2)).pack()
def handle_answer():
mtext = ment.get()
if int(mtext) == answer:
mlabel2 = Label(mGui,text='Correct').pack()
else:
mlabel3 = Label(mGui,text='Incorrect').pack()
global lives
lives = lives - 1
return
def generate_question(y,z):
global n1
global n2
global answer
n1 = r.randint(y,z)
n2 = r.randint(y,z)
answer = int(n1+n2)
mGui = Tk()
main_Gui_setup()
ment = StringVar()
答案 0 :(得分:0)
首先我要说的是,在Tkinter中,您在代码末尾创建的每个窗口都需要添加mainloop()函数。冷杉的例子,
mGui = Tk()
-----------在这里写下您的所有代码--------------
mGui.mainloop()
在您的问题中,只需在Gui2_setup()函数
的末尾添加此行Gui2.mainloop()
最后你的Gui2_setup()函数看起来像这样,
def Gui2_setup(x):
Gui2 = Tk()
Gui2.title("Meh Maths Game")
Gui2_label = Label(text=("{0} Mode").format(x))
Gui2.geometry("240x160")
mEntry = Entry(Gui2,textvariable=ment).pack()
mbutton = Button(Gui2, text = 'OK',command = handle_answer).pack()
Gui2.mainloop()