[英]Attempting to make a Guess the number game i made on Python to use a GUI. but the program not responding when ran
代码应该只显示基本的 GUI 元素,但在运行时它只显示titlelbl
并且没有响应。 我怀疑这可能是我拥有循环的方式,但不太确定。 会喜欢洞察力谢谢!
基本上想要一个文本字段来输入猜测,一个峰会按钮,然后有一个 label 来显示,如果你太高或太低,并显示尝试左直到输或赢
import random
from tkinter import *
window = Tk()
window.title("Guess Number")
window.geometry('1000x800')
rand1 = 1
rand2 = 100
randNum = random.randint(rand1,rand2)
gameEnd = False
answer = "a"
allotedTries = 4
tries = 3
while gameEnd == False:
#Builds elements of GUI
titlelbl = Label(window, text="Guess Number from 1 to 100!", font=("Arial Bold", 50))
titlelbl.grid(row=0,column=0,sticky="NW")
titlelbl.grid_propagate(0)
titlelbl.update()
titlelbl.place(x=500, y=125, anchor="center")
infolbl = Label(window, textvariable = tries, font=("Arial Bold", 25))
infolbl.place(x=500, y=550, anchor="center")
#begining of game logic
guess = int(input("Guess a number from 1 to 100 " ))
tries -= 1
if guess == randNum:
answer = "Correct"
gameEnd = True
elif guess > randNum:
answer = "High"
elif guess < randNum:
answer = "Low"
if tries == 0 :
print("Sorry! Ran out of Tries")
gameEnd = True
break
#displaying of results
if answer == "Correct":
print("Correct! Winner ")
break
elif answer == "High":
print("Too High; Tries Left: ")
print(tries)
infolbl.update()
elif answer == "Low":
print("Too Low; Tries Left: ")
print(tries)
infolbl.update()
window.mainloop()
根据您指定的要求
基本上想要一个文本字段来输入猜测,一个峰会按钮,然后有一个 label 来显示,如果你太高或太低,并显示尝试左直到输或赢
没有必要通过无限循环来实现这一点。 添加您提到的小部件,创建一个 function 来检查输入并相应地更新 label,将其绑定到按钮。 阅读文档并首先尝试自己弄清楚,Stack Overflow 不是编写代码的平台。
关于您的代码的当前问题:
IntVar()
,它是用于存储整数的tries
变量,可以与textvariable
参数一起使用,您需要使用.set()
方法为其赋值。 由于这一切都没有完成,您的 label 已放置但没有可显示的内容。在使用window.mainloop()
打开 window 之前,您有一个将永远运行的循环。 所以你应该把while gameEnd == False
放到一个线程中,然后调用window.mainloop
。 因此,您可以调用 function main 并使用threading.thread()
在运行 window 时运行 main。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.