在While-True语句中满足条件后,Tkinter停止运行

时间:2020-05-04 15:52:56

标签: python tkinter

满足While-True语句中的条件后,Tkinter停止运行。所以我一直在尝试在tkinter中创建一个猜数字游戏。但是在def game()部分中,我猜对了正确的数字或​​输入

如果conint ==数字:

tk.messagebox.showinfo(message =“做得好!”)

程序停止运行/挂起

        import tkinter as tk
        from tkinter import messagebox
        from tkinter import *
        import random

        guess = Tk()
        guess.title("Guessing Game")

        frame = LabelFrame(guess, text="GUESSING GAME", font='Verdana 15', padx=5, pady=5)
        frame.pack(padx=10, pady=10)

        title = Label(frame, text="This is is a guessing game!").pack()
        title2 = Label(frame, text="I am thinking of a number between 1 and 20.").pack()

        e = Entry(frame, width=35, borderwidth=5)
        e.pack()

        e.insert(0, "Enter a number")
        e.delete(0, END)

        number = random.randint(1, 20)
        print(number)

        global guessesTaken
        guessesTaken = 0


        def game():
            global guessesTaken
            conint = int(e.get())
            while True:
                guessesTaken = guessesTaken + 1
                if conint < number:
                    print('Your guess is too low.')
                    tk.messagebox.showinfo(message="Your guess is too low!")
                    break
                elif conint > number:
                    print('Your guess is too high.')
                    tk.messagebox.showinfo(message="Your guess is too high")
                    break

            if conint == number:
                tk.messagebox.showinfo(message="Well Done!")

            if guessesTaken == 5:
                tk.messagebox.showinfo(message="error")


        numbutton = Button(frame, text="Start", command=lambda: game()).pack()

        guess.mainloop()

1 个答案:

答案 0 :(得分:0)

我运行了您的代码。

def game():
    global guessesTaken
    conint = int(e.get())
    while True:
        guessesTaken = guessesTaken + 1
        if conint < number:
            print('Your guess is too low.')
            tk.messagebox.showinfo(message="Your guess is too low!")
            break
        elif conint > number:
            print('Your guess is too high.')
            tk.messagebox.showinfo(message="Your guess is too high")
            break

        elif conint == number:
            tk.messagebox.showinfo(message="Well Done!")
            break

        elif guessesTaken == 5:
            tk.messagebox.showinfo(message="error")
            break

我所做的就是在while循环内添加最后两个if语句并添加一个break。在那之后,我添加了“要猜测的数字”,当出现“做得好的”时,程序不会崩溃或挂在while循环中。