程序崩溃时按下按钮 - 数字猜测游戏 - Tkinter
问题描述:
我不知道为什么这不起作用,我一直在寻找,我不能看到什么是错误的,我已经搞砸了一段时间,所有我想要的是它的工作。 得到输入输出数量相等,当全数等于随机然后你就赢了随机生成的,但是当我按下按钮程序崩溃时按下按钮 - 数字猜测游戏 - Tkinter
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()
答
如果数字不相等的第一次循环,它只是崩溃,他们赢得由于用户在循环运行时没有机会改变他们的答案,所以在循环中不会有任何其他时间。
您可以通过添加一个print语句看到这一点:
while counter < 4:
print("counter:", counter, "guess:", guess_entry.get())
...
+0
好吧,我明白你的意思了,但我仍然没有明白它为什么会崩溃 – Catmantj
+0
@Catmantj:这是“崩溃”,因为循环永远不会退出。 –
while循环似乎毫无意义。在该循环过程中,用户是否有机会输入任何数据。 'guess_entry.get()'将在循环的每次迭代中返回完全相同的结果。 –
@BryanOakley他们不需要输入任何东西来查看他们的数字是否相等。 – Catmantj
@BryanOakley Oakly和guess_entry.get()我假设你的意思是'如果guess_entry.get()==答案:',那就是检查整个数字是否正确不只是一些 – Catmantj