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 (将#修改为@)