类型错误:类型 'method' 的参数不可迭代



错误

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之间创建一个切换。

我读过一些类似的答案,但我不想在代码中使用__iter__()。有人能提供其他建议吗?

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

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

由于方法对象本身不直接支持包含测试,因此Python尝试对对象进行迭代,以查看其中是否包含与字符串匹配的元素。

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

出现该错误的原因是在.get查询后没有添加"((",因此出现了修复q = variable1.getq = variable.get() 更改的错误

最新更新