2015-08-26 61 views
0

這是我的代碼: 它給了我一個錯誤,在分配之前使用b。Tkinter python代碼不起作用

from Tkinter import * 
mConsole=Tk() 
words=StringVar() 
b='_ I _ _ U _' 
def c(): 
    if b=='_ I _ _ U _': 
     b='C I _ C U _' 
      words.set(b) 

words.set(b) 
word=Label(textvariable=words, font='Jokerman 20').grid(row=1,column=3 ,columnspan=4) 
+1

這是**,在'c' ** - 大概是完整的追溯是指未綁定的本地人?請提供[mcve]和整個錯誤。 – jonrsharpe

+0

與您的問題不完全相關,但是:您是否在使用教程? – Kevin

+0

如果這是你的完整代碼,那可能不會是你唯一的錯誤 - 你還必須調用'mConsole.mainloop()',並且你沒有在任何地方調用過'c()'。 –

回答

0

您需要用global命令globalize變量。在任何函數聲明之後,全局化您打算使用的任何變量。

在這種情況下,你只需要添加:

global b 

在你的函數的頂部和你的代碼應該工作。

from Tkinter import * 
mConsole=Tk() 
words=StringVar() 
b='_ I _ _ U _' 
def c(): 
    global b 
    if b=='_ I _ _ U _': 
     b='C I _ C U _' 
     words.set(b) 

words.set(b) 
word=Label(textvariable=words, font='Jokerman 20').grid(row=1,column=3 ,columnspan=4) 

此資源可能幫助:http://www.python-course.eu/global_vs_local_variables.php

作爲一個方面說明,我建議更具描述性的變量/函數名。