检索和使用 tkinter 组合框选择

新手上路,请多包涵

我正在为一个自定义计算器组装一个 GUI,该计算器可以自动将某些测量单位转换为其他测量单位。

我想返回实际选择的文本,这样我就可以根据用户选择的任何内容编写 if 语句。如何让 python 返回实际值而不是我现在得到的值?

每当我测试这段代码时,我都会收到以下信息:

VirtualEvent 事件 x=0 y=0

以下是我尝试用于此过程的代码部分。对于下面的示例代码,我希望用户能够以英亩或平方英尺的形式输入面积。然后,我计划编写一个 if 语句,将他们选择的任何内容转换为平方公里(本示例中未包含的数字输入代码,试图使这篇文章简洁明了)。

 import tkinter as tk
from tkinter.ttk import *

master = tk.Tk()
master.title("Gas Calculator")
v = tk.IntVar()
combo = Combobox(master)

def callback(eventObject):
    print(eventObject)

comboARU = Combobox(master)
comboARU['values']= ("Acres", "Ft^2")
comboARU.current(0) #set the selected item
comboARU.grid(row=3, column=2)
comboARU.bind("<<ComboboxSelected>>", callback)

master.mainloop()

如果我可以扩展任何内容,请告诉我。我在 python 方面还是个新手,所以如果这只是我缺少的一个简单语法,我一点也不会感到惊讶。

原文由 Josiah Hulsey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 733
2 个回答

您应该使用 get() 函数检索 comboARU 的内容,如下所示:

 def callback(eventObject):
    print(comboARU.get())

原文由 Billal Begueradj 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以通过 eventObject.widget.get() 直接从事件对象中检索 Combobox 的值。

 import tkinter as tk
from tkinter.ttk import *

master = tk.Tk()
master.title("Gas Calculator")
v = tk.IntVar()
combo = Combobox(master)

def callback(eventObject):
    # you can also get the value off the eventObject
    print(eventObject.widget.get())
    # to see other information also available on the eventObject
    print(dir(eventObject))

comboARU = Combobox(master)
comboARU['values']= ("Acres", "Ft^2")
comboARU.current(0) #set the selected item
comboARU.grid(row=3, column=2)
comboARU.bind("<<ComboboxSelected>>", callback)

master.mainloop()

原文由 R Spark 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题