-1

tkinter ウィジェットの変数を操作しようとするとエラーが発生する理由がわかりません:
AttributeError: 'str' オブジェクトには属性 'pack' がありません 。一連のエントリ名を作成しようとしているため、基本的な名前が A の場合、次の名前は次のようになります。 A_1、A_2、A_3.....ここに私のコードが助けを必要としています

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')   
4

2 に答える 2

0

おそらくこれが必要です:

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

A_generated現在のコードでは、のインスタンスとして宣言していませんEntryが、文字列です。

于 2013-11-01T08:41:29.640 に答える
0

...一連のエントリ名を作成しようとしています...

そんなことはできませんし、すべきではありません。生成された変数名は、ほとんどの場合、価値があるよりも厄介です。A_1、B_1 などの名前の変数を作成していると思うかもしれませんが、A_generated を再割り当てしているだけです。最初に、A_generated は文字列「A_1」であり、それをウィジェット名と同じになるように変更します。ウィジェットを指す A_1 という名前の変数にはなりません。

variable の値に基づいてウィジェットへの参照を作成する場合はx、辞書を使用する必要があります。例えば:

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

これにより、A[1]will は willB[1]などのようにウィジェットを参照します。(ただし、最初に A、B などの名前のグローバル変数を作成する必要があります)。

于 2013-11-01T10:55:01.957 に答える