错误

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尝试对对象进行迭代以查看其中是否包含与您的字符串匹配的任何元素。

如果调用该方法,则会获得一个字符串值。字符串确实支持遏制测试。

08-24 17:13