错误
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__()
。任何人都可以提供任何其他建议吗?
答案 0 :(得分:3)
您忘记调用 Entry.get()
方法:
q = variable1.get()
# ^^ call the method
因为方法对象本身不直接支持包含测试,所以Python会尝试迭代对象以查看其中是否包含与您的字符串匹配的任何元素。
如果您调用方法,则会获得字符串值。字符串确实支持包含测试。
答案 1 :(得分:1)
出现该错误的原因是,您没有在after.get查询中添加“()”,因此将此更改q = variable1.get
更改为q = variable.get()
的错误