2015-02-04 1 views
1

저는 Python을 처음 접했고 간단한 숫자 추측 게임을 설계해야하는 CS 문제에 대해 연구하고 있습니다. 게임은 또한 게임의 규칙을 설명하는 Tkinter Label widget (1 - 100 사이의 숫자 선택), 사용자의 추측을받는 Entry 위젯, 그리고 클래스 내에서 메소드를 호출하는 버튼을 포함해야합니다. 1) 추측이 '비밀'런덤보다 높거나 낮은 경우 2) 위 또는 아래를 추측하여 올바른 방향으로 사용자를 안내하고 3) 올바른 대답을 얻은 후 사용자에게 축하를 전하십시오.Tkinter 대화 상자 showinfo 루프 오류

showinfo 대화 상자가 무한 반복되는 조건부에서 오류가 계속 발생합니다. 나는 내가 잘못 가고있는 곳을 파악, 그러나 여기 가져 와서 내가 시작 어디에 내 코드입니다 수없는 다음과 같은 : 내가 루프로 실행하고 왜

from random import randint 
from tkinter import Tk, Frame, Button, Entry, Label, END 
from tkinter.messagebox import showinfo 

class Game(Frame): 
    'A guessing game where a user picks a number from 1 - 100' 
    def __init__(self, parent=None): 
     Frame.__init__(self, parent) 
     self.pack() 
     Label(self, text = "Pick an integer from 1 - 100").grid(row = 0, column = 0) 
     self.answer = Entry(self, width=20) 
     self.answer.grid(row=0, column=1) 
     Button(self, text='Enter', command = self.compute).grid(row = 1, column = 0) 

    def compute(self): 
     secret = randint(1, 100) 
     answer = int(self.answer.get()) 
     while secret != answer: 
      if answer > secret: 
       showinfo(message='Guess a lower integer') 
       self.answer.delete(0, END) 
      else: 
       showinfo(message='Guess a higher integer') 
       self.answer.delete(0, END) 
     showinfo(message='You are correct!') 

사람이 설명 할 수하다면 나는 가능성이 그림을 수있을 것입니다 나머지는.

답변

3

문제는 당신이 때문에 만족 상태 secret != answer 동안 루프를 입력하면 문이 대화 상자가 표시 계속 그 이유는, 수 진정한을 지속적으로 평가하기 때문에, 당신은 종료되지 것입니다. 마지막 showinfo 항상 실행됩니다

while secret != answer: 
    if answer > secret: 
     showinfo(message='Guess a lower integer') 
     self.answer.delete(0, END) 
     break 
    else: 
     showinfo(message='Guess a higher integer') 
     self.answer.delete(0, END) 
     break 
showinfo(message='You are correct!') 

참고,하지만 난 당신이 이것을 변경할 수 있습니다 확신 :

는 예를 들어 showinfo에 호출 후 break를 넣을 수 있습니다,이 문제를 해결합니다.

+0

너무 간단합니다 ... 최종/아래의 게임을 ... 감사합니다. – lrryhll

1

감사합니다 @ 린즐러 - 여기에 내가 가진 것이 있습니다 (아무도 쓸모없는 '숫자 게임 추측'을하고 싶다면). 건배 ...

from random import randint 
from tkinter import Tk, Frame, Button, Entry, Label, END 
from tkinter.messagebox import showinfo 

class Game(Frame): 
'A guessing game where a user picks a number from 1 - 100' 
    def __init__(self, parent=None): 
     Frame.__init__(self, parent) 
     self.pack() 
     Label(self, text = "Pick an integer from 1 - 100").grid(row = 0, column = 0) 
     self.answer = Entry(self, width=20) 
     self.answer.grid(row=0, column=1) 
     Button(self, text='Enter', command = self.compute).grid(row = 1, column = 0) 
     self.secret = randint(1,100) 

    def compute(self): 
     answer = int(self.answer.get()) 
     while self.secret != answer: 
      if answer > self.secret: 
       showinfo(message='Guess a lower integer') 
       self.answer.delete(0, END) 
       break 
      else: 
       showinfo(message='Guess a higher integer') 
       self.answer.delete(0, END) 
       break 

     if self.secret == answer: 
      showinfo(message='You got it! :)')