我在TkInter的游戏遇到问题

时间:2020-05-07 03:26:30

标签: python python-3.x tkinter

因此,我正在制作一个随机数的游戏,您必须猜测所有数字都显示在界面上。该代码在没有界面的情况下起作用(这是“猜测”功能),但是当我按下按钮时尝试将其移入该功能时,游戏始终会冻结。

有人可以帮我找到问题吗?

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 :(得分:0)

删除while (correctGuess == False):。如果答案不正确,则由于correctGuess不会在循环中改变,它会陷入无限循环-始终为False。您可以在循环中添加print(1) -您将看到它无法退出。删除该行,应该没问题。