У меня проблема с игрой в TkInter - PullRequest
0 голосов
/ 07 мая 2020

Итак, я делаю игру, в которой есть случайное число, и вам нужно угадать это число, пока все отображается в интерфейсе. Код работал без интерфейса (это функция "угадать"), но как только я попытался переместить его в функцию при нажатии кнопки, игра всегда зависает.

Может ли кто-нибудь помочь мне найти проблема?

from tkinter import *
import random
import time


root = Tk()

root.title("Mack's totally advanced Number Guesser!")
root.geometry('404x300')
root.resizable(False,False)
root.configure(bg='black')



fontA = 'BigNoodleTitling'
fontSizeA = 20

num = random.randint(1, 100)

# The issue is below

def guess():
    correctGuess = False
    while (correctGuess == False):
        guess = guessEnt.get()
        guess = int(guess)
        if (guess == num):
            correctGuess = True
            welcomeLbl.config(text="Correct! Congratulations...")
        elif (guess > num):
            welcomeLbl.config(text='Err, TOO HIGH. Try Again.')
        elif (guess < num):
            welcomeLbl.config(text='Errrrrr, TOO LOW. Try Again.')



def start():
    instrButton.grid_forget()
    startButton.grid_forget()
    welcomeLbl.config(text="Guess The Number! (1-100)")
    welcomeLbl.grid(pady=30)
    guessEnt.grid(row=3, column=0)
    guessButton.grid(row=4, column=0, pady=20)



def instructions():
    instrButton.grid_forget()
    startButton.grid_forget()
    welcomeLbl.config(text="So you need instructions ay?")
    welcomeLbl.update()
    time.sleep(3)
    welcomeLbl.config(text="Well, it's quite simple")
    welcomeLbl.update()
    time.sleep(2)
    welcomeLbl.config(text="Just guess the number!")
    welcomeLbl.update()
    time.sleep(3)
    welcomeLbl.config(text="How you say?")
    welcomeLbl.update()
    time.sleep(2)
    welcomeLbl.config(text="Type your guess into the box!")
    welcomeLbl.update()
    time.sleep(3)
    welcomeLbl.config(text="Welcome Random Person")
    instrButton.grid(row=3,column=0, sticky=N)
    startButton.grid(row=4,column=0, columnspan=1, sticky=E+W, pady=25)




titleLbl = Label(root)
titleLbl['borderwidth'] = (2)
titleLbl['relief'] = ('solid')
titleLbl['text'] = ("Mack's totally advanced Number Guessing Game!")
titleLbl['font'] = (fontA, fontSizeA)
titleLbl.grid(row=0, column=0)


welcomeLbl = Label(root, fg='white', bg='black')
welcomeLbl['text'] = ("Welcome Random Person")
welcomeLbl['font'] = (fontA, 30)
welcomeLbl.grid(row=2, column=0, pady=20)

instrButton = Button(root, command=instructions)
instrButton['text'] = ("Instructions")
instrButton['font'] = (fontA, fontSizeA)
instrButton.grid(row=3,column=0, sticky=N)

startButton = Button(root, fg='red', command=start)
startButton['text'] = ("Start")
startButton['font'] = (fontA, 40)
startButton.grid(row=4,column=0, columnspan=1, sticky=E+W, pady=25)

guessEnt = Entry(root)
guessEnt['font'] = (fontA, fontSizeA)

guessButton = Button(root, command=guess)
guessButton['text'] = ("Guess")
guessButton['font'] = (fontA, 20)

root.mainloop()

Спасибо, Мак.

1 Ответ

0 голосов
/ 07 мая 2020

Удалить while (correctGuess == False):. Если ответ неверен, он превратится в бесконечное l oop, поскольку correctGuess не меняется в l oop - это всегда False. Вы можете добавить print(1) в l oop - вы увидите, что он не может выйти. Удалите эту строку, и все будет в порядке.

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