Python 3.x 当按下按钮时程序崩溃-数字猜测游戏-Tkinter
我不知道为什么这不起作用,我一直在寻找,我看不出有什么问题,我已经把它弄得一团糟了一段时间,我只想让它起作用。 获取输入输出等于随机生成的数字如果完整数字等于随机数,则您获胜,但当我按下按钮时,它会崩溃Python 3.x 当按下按钮时程序崩溃-数字猜测游戏-Tkinter,python-3.x,tkinter,Python 3.x,Tkinter,我不知道为什么这不起作用,我一直在寻找,我看不出有什么问题,我已经把它弄得一团糟了一段时间,我只想让它起作用。 获取输入输出等于随机生成的数字如果完整数字等于随机数,则您获胜,但当我按下按钮时,它会崩溃 from tkinter import * from tkinter import ttk import random master = Tk() master.title('Guess The Number!') global answer global guess_entry global
from tkinter import *
from tkinter import ttk
import random
master = Tk()
master.title('Guess The Number!')
global answer
global guess_entry
global guess_display
answer = str(random.randint(1000,9999))
guess_counter = 0
def callback():
print('Button pressed')
counter = 0
correct = []
while counter < 4:
if guess_entry.get() == answer:
correct.append('Well done, that is correct')
break
elif guess_entry.get()[counter] == answer[counter]:
correct.append(guess_entry.get[counter])
counter += 1
guess_display['text'] = ' '.join(str(correct))
def Help():
win = Toplevel()
win.title('Help')
l = Label(win, text="Guess a 4 digit number and I will tell you\n what you got right,\n keep trying until you get it in the \ncorrect order with correct numbers")
l.grid(row=0, column=0)
b = Button(win, text="Okay", command=win.destroy)
b.grid(row=1, column=0)
guess_entry = Entry(master)
guess_check = Button(master, text='Guess', command=callback)
guess_display = Label(master,text='_ _ _ _')
help_button = ttk.Button(master, text="?", command=Help,width=3)
guess_entry.grid(row=0,column=2)
guess_check.grid(row=1,column=2)
guess_display.grid(row=2,column=1)
help_button.grid(row=0,column=4)
master.mainloop()
从tkinter导入*
从tkinter导入ttk
随机输入
master=Tk()
master.title('猜数字!')
全球答案
全局猜测输入
全局猜测显示
答案=str(随机随机随机数(10009999))
猜一猜计数器=0
def callback():
打印('按钮按下')
计数器=0
正确=[]
当计数器<4时:
如果guess_entry.get()=答案:
正确。append('做得好,这是正确的')
打破
elif guess_entry.get()[counter]==answer[counter]:
正确。追加(猜测项。获取[计数器])
计数器+=1
猜测显示['text']=''。加入(str(正确))
def Help():
win=顶级()
win.title(“帮助”)
l=Label(win,text=“猜一个4位数的数字,我会告诉你\n你做对了什么,\n继续尝试,直到你用正确的数字按正确的顺序得到它为止”)
l、 网格(行=0,列=0)
b=按钮(win,text=“好”,command=win.destroy)
b、 网格(行=1,列=0)
猜测\输入=输入(主)
guess\u check=按钮(主控,text='guess',command=callback)
猜测显示=标签(主控,文本=“”
帮助按钮=ttk.按钮(主控,文本=“?”,命令=帮助,宽度=3)
guess_entry.grid(行=0,列=2)
猜测检查网格(行=1,列=2)
guess_display.grid(行=2,列=1)
帮助按钮网格(行=0,列=4)
master.mainloop()
如果第一次通过循环时数字不相等,那么在其他任何时间通过循环时数字都不相等,因为用户在循环运行时没有机会更改答案
您可以通过添加打印语句看到这一点:
while counter < 4:
print("counter:", counter, "guess:", guess_entry.get())
...
计数器<4时:
打印(“计数器:”,计数器,“猜测:”,猜测条目。get())
...
如果第一次通过循环时数字不相等,那么在其他任何时间通过循环时数字都不相等,因为用户在循环运行时没有机会更改答案
您可以通过添加打印语句看到这一点:
while counter < 4:
print("counter:", counter, "guess:", guess_entry.get())
...
计数器<4时:
打印(“计数器:”,计数器,“猜测:”,猜测条目。get())
...
您的while循环似乎毫无意义。在循环过程中,用户没有机会输入任何数据guess\u entry.get()
将在循环的每次迭代中返回完全相同的内容。@BryanOakley他们不需要输入任何东西,这是一个检查,看他们的数字是否相等。@BryanOakley-Oakly和guess\u entry.get()我想你是指如果guess\u entry.get()==答案:
,这是为了检查整个数字是否正确,而不仅仅是我在代码中看到两个调用Tk()
,这永远不会有好结果。您需要使用Toplevel()
来创建其他窗口。您的while循环似乎毫无意义。在循环过程中,用户没有机会输入任何数据guess\u entry.get()
将在循环的每次迭代中返回完全相同的内容。@BryanOakley他们不需要输入任何东西,这是一个检查,看他们的数字是否相等。@BryanOakley-Oakly和guess\u entry.get()我想你是指如果guess\u entry.get()==答案:
,这是为了检查整个数字是否正确,而不仅仅是我在代码中看到两个调用Tk()
,这永远不会有好结果。你需要使用Toplevel()
来创建额外的窗口。好的,我现在明白你的意思了,但我仍然不明白为什么会这样crashing@Catmantj当前位置“崩溃”是因为循环永远不会退出。好吧,我现在明白你的意思了,但我仍然不明白为什么会这样crashing@Catmantj:它正在“崩溃”,因为循环从未、从未、从未退出。