在tkinter中创建不同功能的窗口

时间:2014-04-12 21:07:44

标签: python tkinter

我正在使用一个函数来创建一个新窗口(例如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()

1 个答案:

答案 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()