Tkinter перестанет работать после того, как условия будут выполнены в операторе while-True - PullRequest
0 голосов
/ 04 мая 2020

Tkinter перестанет работать после выполнения условий в инструкции «Пока». Поэтому я пытался создать игру с угадыванием чисел в tkinter. Но в разделе def game (), когда я угадываю правильное число, или в

, если conint == number:

tk.messagebox.showinfo (message = "Well Done!")

Программа перестает работать / зависает

        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 голосов
/ 04 мая 2020

Я запустил твой код.

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

Все, что я сделал, - это добавил два последних оператора if в то время как l oop и добавил разрыв. После этого я добавил «число, которое нужно угадать», и когда появляется «хорошо сделано», программа не взламывает sh или не зависает некоторое время l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...