2013-11-01 144 views
-1

我不知道爲什麼試圖操縱Tkinter的部件的變量時出現錯誤:
AttributeError的:「海峽」對象有沒有屬性「包」 我嘗試做一個sieres條目名稱,所以如果我的基本的名稱是A下一個名稱將是: A_1,A_2,A_3 .....這裏是我的代碼需要幫助錯誤時操作的Tkinter窗口部件的實例名稱

def generate_fieldes(x): 
    generated_frame='frame1_'+x 
    print generated_frame 
    A_generated ='A_'+x 
    B_generated ='B_'+x 
    C_generated ='C_'+x 
    D_generated ='D_'+x 
    E_generated ='E_'+x 
    F_generated ='F_'+x 
    if frame1.winfo_exists()==1: 

     generated_frame=Frame(tab1,height=200,width=600,bg='yellow') 
     A_generated = AutocompleteEntry(list, generated_frame,bd =2,width=26,justify=RIGHT) 


     A_generated.pack(side = RIGHT) 
     A_generated.focus_set()   

     B_generated = Entry(generated_frame, bd =2,width=12,justify=RIGHT) 
     B_generated.pack(side = RIGHT) 
     C_generated = Entry(generated_frame, bd =2,width=12,justify=RIGHT) 
     C_generated.pack(side = RIGHT) 
     D_generated = Entry(generated_frame, bd =2,width=17,justify=RIGHT) 
     D_generated.pack(side = RIGHT) 
     E_generated = Entry(generated_frame, bd =2,width=17,justify=RIGHT) 
     E_generated.pack(side = RIGHT) 
     F_generated = Entry(generated_frame, bd =2,width=20,justify=RIGHT) 
     F_generated.pack(side = RIGHT) 
     generated_frame.pack(fill=X,side=TOP) 

generate_fields('1') 
+0

'A_generated'只是一個字符串,而一個字符串沒有'pack'方法。 – aIKid

+0

好吧我做的是理解,我問的是如何使它沒有錯誤 –

+0

正如你在上面看到的例如A_generated有'pack'方法,它應該是條目 –

回答

0

你可能需要這樣:

A_generated = Entry(generated_frame, bd =2,width=12,justify=RIGHT) 
A_generated.pack(side = RIGHT) 
A_generated.focus_set() 

在您當前的代碼中,您沒有聲明A_generated作爲Entry的實例,而是一個字符串。

+0

是的,我打錯了A1_generated INSTEAD的A_generated;但仍然有錯誤,即使糾正後 –

+0

你能提供完整的追溯? – aIKid

+0

無緣無故...錯誤失望,現在工作???? –

0

...im trying to make a sieres of entry names ...

你不能,也不應該那樣做。生成的變量名稱幾乎總是比它們值得的更麻煩。您可能會認爲您正在創建名爲A_1,B_1等的變量,但您只是重新分配了A_generated。首先,A_generated是字符串「A_1」,然後將其更改爲小部件名稱。你做而不是最終會有一個名爲A_1的變量指向一個小部件。

如果您想根據變量x的值創建對小部件的引用,則應該使用字典。例如:

A[x] = Entry(...) 
B[x] = Entry(...) 

就這樣,A[1]將提到一個小部件,也將B[1],等等。 (儘管你必須首先創建一個名爲A,B等的全局變量)。