如何解决Python Combobox在2个地方的同一段代码有效且失败
我在使用Python tkinter时遇到了奇怪的问题。该程序本身超过500行,并且还会更多,但是我将发布相关文章。
系统配置:
PyCharm 2019.1.3内部版本#PY-191.7479.30 JRE:11.0.2 + 9-b159.60 amd64 JVM:JetBrains s.r.o的OpenJDK 64位服务器VM Windows 10 10.0
问题的核心:访问同一全局变量的同一段代码在一个地方正确运行,而在另一个地方完全失败,这在我看来根本没有任何理由。
我有一个组合框(精确地说是一个组合框数组),它采用两个值之一:“ CC”和“ CV”。
ModeChosens[i] = ttk.ComboBox(pinSettingsFrames[i],textvariable=dropdownVarModes[i],width=5)
ModeChosens[i]['values'] = ("CC","CV")
ModeChosens[i].grid(row=1,column=4)
ModeChosens[i].bind("<<ComboBoxSelected>>",ModeChanged)
提交表单时,我可以很容易地获得选定的值:
if(ModeChosens[k].get()=="CV"):
finalnumber=int(extractednumericValue)
else:
...
这段代码正确执行。有用。总是。我知道我实际上并没有使用textvariable,但这是按原样工作的,我对此进行了测试。
但是我想在选择特定组合框值后立即执行操作。问题是
def ModeChanged(event):
print(dropdownVarModes[i].get()) #get value from var
print(ModeChosens[i].get()) #get value directly from comboBox
我现在甚至在我的调试尝试中将数组指针作为参数传递给我们,假设我从组合框的数组中获取了其他组合框的值
def ModeChanged(k):
print(dropdownVarModes[k].get()) #get value from var
print(ModeChosens[k].get()) #get value directly from comboBox
ModeChosens[i] = ttk.ComboBox(pinSettingsFrames[i],lambda h: ModeChanged(k=i))
结果相同!始终为“ CC”!
任何提示将不胜感激,谢谢。
应该告诉您所选择的功能的功能与上面的功能完全相同,但是无论我画什么,它始终会返回默认值。在同一应用程序中具有相同的获取功能。在一个地方,它正确执行,在另一个地方,它返回错误的值。我花了一些时间来研究如何在组合框选择上实施操作,没有很多解决方案,几乎所有解决方案都建议我使用bind来实现它,但是,如您所见,它不起作用,而且我有不知道为什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。