-1

我不知道为什么在尝试操作 tkinter 小部件的变量时会出错:
AttributeError: 'str' object has no attribute '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 的变量。

如果要根据变量的值创建对小部件的引用x,则应使用字典。例如:

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

这样,A[1]将引用一个小部件,就像将一样B[1],依此类推。(尽管您必须首先创建一个名为 A、B 等的全局变量)。

于 2013-11-01T10:55:01.957 回答