2015-08-24 3 views
0

Я пытаюсь получить глобальную переменную внутри события «OutputAnswerTest», которая будет обнаружена в статусе if, но я не могу заставить ее работать. Как мне это сделать?Как сделать глобальную переменную видимой вне события

#AnswerVar = IntVar() 
AnswerBox = Entry(topFrame) 
AdditionQuestionLeftSide = random.randint(0, 10) 
AdditionQuestionRightSide = random.randint(0, 10) 
AdditionQuestionRightSide = Label(topFrame, text= AdditionQuestionRightSide).grid(row=0,column=0) 
AdditionSign = Label(topFrame, text="+").grid(row=0,column=1) 
AdditionQuestionLeftSide= Label(topFrame, text= AdditionQuestionLeftSide).grid(row=0,column=2) 
EqualsSign = Label(topFrame, text="=").grid(row=0,column=3) 
AnswerBox.grid(row=0,column=4) 


global answer 

def OutputAnswerText(event): 
    answer = AnswerBox.get() 

AnswerBox.bind('<Return>', OutputAnswerText) # This is saying that if the "Return key (enter)" is pressed, run the handler, which the event I defined above 

if Total == answer: 
    Correct = Label(topFrame, text="Correct").grid(row=2,column=3) 

Благодаря

+0

Подтвердили ли вы, что OutputAnswerText вызывается перед тем ваш оператор if выполняется? Прямо сейчас выглядит так, как будто оператор if будет выполнен сразу, а не после нажатия пользователем клавиши возврата. –

+0

извините ... Я новичок в этом, я бы это сделал? –

ответ

0

Объявите это выходит за рамки вашего global заявления:

In [7]: a = 2 

In [8]: def test(): 
    ...:  global a 
    ...:  a = 5 
    ...: 

In [9]: print a 
2 

In [10]: test() 

In [11]: print a 

Для Вашего случая использования:

answer = None 

def OutputAnswerText(event): 
    global answer 
    answer = AnswerBox.get() 
+0

Спасибо за ваш ответ. Теперь я обновил код, перемещая глобальную переменную за пределами события (я думаю, это то, что вы имели в виду), но я все еще получаю сообщение об ошибке, которое не определено из инструкции if, но у события нет проблем. –

+0

Прочтите код, который я вам дал; он должен быть определен во внешней области для ключевого слова 'global' для работы в вашей внутренней области. 'a = 2; def test(): global a; a = 3; ' –

+0

Спасибо .. У меня сейчас работает –

Смежные вопросы