2017-10-19 15 views
1

これがなぜ機能しないのか分かりません。私は探していて何が間違っているのか見当たりません。 。完全な番号がランダムに等しい場合 は入力出力番号はランダムに生成されたに等しいます、あなたは勝つが、私は数字がループを介して第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オークリーとguess_entry.get()私は、 'guess_entry.get()== answer:'が、数字全体が正しいだけであるかどうかをチェックすることを意味すると仮定します。 – Catmantj

答えて

0

を押すと、それだけでクラッシュループが実行されている間、ユーザーは答えを変更する機会がありませんので、ループを通して他の時間と同じになることはありません。

あなたはprint文を追加することで、これを見ることができます:

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

今、あなたは今何を意味しているのか分かりませんが、なぜそれがクラッシュするのか分かりません。 – Catmantj

+0

@Catmantj:決してループが決して終了しないので、クラッシュしています。 –

関連する問題