程序崩溃时按下按钮 - 数字猜测游戏 - 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() 
+0

while循环似乎毫无意义。在该循环过程中,用户是否有机会输入任何数据。 'guess_entry.get()'将在循环的每次迭代中返回完全相同的结果。 –

+0

@BryanOakley他们不需要输入任何东西来查看他们的数字是否相等。 – Catmantj

+0

@BryanOakley Oakly和guess_entry.get()我假设你的意思是'如果guess_entry.get()==答案:',那就是检查整个数字是否正确不只是一些 – Catmantj

如果数字不相等的第一次循环,它只是崩溃,他们赢得由于用户在循环运行时没有机会改变他们的答案,所以在循环中不会有任何其他时间。

您可以通过添加一个print语句看到这一点:

while counter < 4: 
    print("counter:", counter, "guess:", guess_entry.get()) 
    ... 
+0

好吧,我明白你的意思了,但我仍然没有明白它为什么会崩溃 – Catmantj

+0

@Catmantj:这是“崩溃”,因为循环永远不会退出。 –