2017-10-19 156 views
1

我不知道爲什麼這不起作用,我一直在尋找,我不能看到什麼是錯誤的,我已經搞砸了一段時間,所有我想要的是它的工作。 得到輸入輸出數量相等,當全數等於隨機然後你就贏了隨機生成的,但是當我按下按鈕程序崩潰時按下按鈕 - 數字猜測遊戲 - 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

回答

0

如果數字不相等的第一次循環,它只是崩潰,他們贏得由於用戶在循環運行時沒有機會改變他們的答案,所以在循環中不會有任何其他時間。

您可以通過添加一個print語句看到這一點:

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

好吧,我明白你的意思了,但我仍然沒有明白它爲什麼會崩潰 – Catmantj

+0

@Catmantj:這是「崩潰」,因爲循環永遠不會退出。 –