TypeError:类型'方法'的参数是不可迭代的

时间:2015-07-30 08:32:13

标签: python iteration

错误

Traceback (most recent call last):
  File "C:/Users/RCS/Desktop/Project/SHM.py", line 435, in <module>
    app = SHM()
  File "C:/Users/RCS/Desktop/Project/SHM.py", line 34, in __init__
    frame = F(container, self)
  File "C:/Users/RCS/Desktop/Project/SHM.py", line 384, in __init__
    if "3202" in q:
TypeError: argument of type 'method' is not iterable

代码

代码的某些部分,初始化以及所有

while 1:
    q = variable1.get
    if "3202" in q:
        variable2.set("NI NODE3202")
        try:
            switch(labelframe2, labelframe1)
        except:
            switch(labelframe3, labelframe1)
    elif "3212" in q:
        variable2.set("NI NODE3212")
        try:
            switch(labelframe1, labelframe2)
        except:
            switch(labelframe3, labelframe2)
    elif "3214" in q:
        variable2.set("NI NODE3214")
        try:
            switch(labelframe1, labelframe3)
        except:
            switch(labelframe2, labelframe3)
    else:
        None

代码的其他部分

def switch(x, y):

    if x.isGridded:
        x.isGridded = False
        x.grid_forget()
        y.isGridded = True
        y.grid(row=0, column=0)
    else: 
        return False

我正在尝试在另外labelframe内的三个labelframe之间创建一个切换,而在labelframe之外的其他labelframe是不会更改的。{ / p>

我已经阅读了一些类似的答案,但我不想在我的代码中使用__iter__()。任何人都可以提供任何其他建议吗?

2 个答案:

答案 0 :(得分:3)

您忘记调用 Entry.get()方法:

q = variable1.get()
#                ^^ call the method

因为方法对象本身不直接支持包含测试,所以Python会尝试迭代对象以查看其中是否包含与您的字符串匹配的任何元素。

如果您调用方法,则会获得字符串值。字符串确实支持包含测试。

答案 1 :(得分:1)

出现该错误的原因是,您没有在after.get查询中添加“()”,因此将此更改q = variable1.get更改为q = variable.get()的错误