2017-10-13 228 views
0

首先,我对编程非常陌生,这是我编程的第一个问题。 我目前正在尝试在greenius中自动模拟。我需要创建很多场景,然后将替换其他参数。迭代字典(不可迭代)和合并字典,python

我所有的场景应该是这样的词典:

{'S1': 'a1, b1', 'S2': 'a1, b2', 'S3': 'a2, b1', 'S4': 'a2,b2', 'S5': 'a3,b1', 'S6': 'a3, b2'} 

但如果我尝试下面的代码我没有得到我想要的结果。

def callback7(): 
    ax = int(SZ1) 
    bx = int(SZ2) 
    for x in range(ax): 
    Label(top, text='a'+str(x+1), relief=SUNKEN, width=5).grid(row=x, column=0) 
    a.append(Entry(top, width=25)) 
    a[x].grid(row=x, column=1) 
    for y in range(bx): 
    Label(top, text='b'+str(y+1), relief=SUNKEN, width=5).grid(row=y, column=2) 
    b.append(Entry(top, width=25)) 
    b[y].grid(row=y, column=3) 
    B1 = Button(top, text='Save', width = 5,command=callback8).grid(row=0,column=4) 

def callback8(): 
    for entry in a: 
    Pa = entry.get() 
    dcta['a{0}'.format(i)] = Pa 
    i = i+1 
    for entry1 in b: 
    Pb = entry1.get() 
    dctb['b{0}'.format(j)] = Pb 
    j = j+1 
    for key1, value1 in dcta.items: 
    for key2, value2 in dctb.items: 
     ar = value1 
     br = value2 
     dctz['S{0}'.format(u)] = ar+'\t'+br 
     u = u+1 

我在这里得到的错误是:

TypeError: 'builtin_function_or_method' object is not iterable 

什么我错在这里做什么?

+4

你应该** **调用方法:这是'key1的为1,值1在dcta.items()'等'不为key1的,值1在dcta.items'。 –

+0

哦,我的上帝,我试图找出我失踪了几个小时...非常感谢你! – Hayvanbroo

回答

-1

更改代码的对齐方式。对齐是错误的,它应该如下所示。

def callback7(): 
    ax = int(SZ1) 
    bx = int(SZ2) 
    for x in range(ax): 
     Label(top, text='a'+str(x+1), relief=SUNKEN, width=5).grid(row=x, column=0) 
     a.append(Entry(top, width=25)) 
     a[x].grid(row=x, column=1) 
    for y in range(bx): 
     Label(top, text='b'+str(y+1), relief=SUNKEN, width=5).grid(row=y, column=2) 
     b.append(Entry(top, width=25)) 
     b[y].grid(row=y, column=3) 
    B1 = Button(top, text='Save', width = 5,command=callback8).grid(row=0,column=4) 

def callback8(): 

    for entry in a: 
     Pa = entry.get() 
     dcta['a{0}'.format(i)] = Pa 
     i = i+1 
    for entry1 in b: 
     Pb = entry1.get() 
     dctb['b{0}'.format(j)] = Pb 
     j = j+1 
    for key1, value1 in dcta.items: 
     for key2, value2 in dctb.items: 
      ar = value1 
      br = value2 
      dctz['S{0}'.format(u)] = ar+'\t'+br 
      u = u+1 
+0

不,这不是问题。我把它误入论坛。 – Hayvanbroo