我正在为自定义计算器组装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的新手,所以如果这只是一个我想念的简单语法,我不会感到惊讶。
答案 0 :(得分:1)
您应该使用comboARU
函数检索get()
的内容,如下所示:
def callback(eventObject):
print(comboARU.get())
答案 1 :(得分:1)
您可以直接从事件对象中检索Combobox的值 by eventObject.widget.get()。
OutputPath
答案 2 :(得分:0)
如果您希望能够使用通过comboAru.current(0)
设置的默认值,则事件处理将无法正常工作,我发现按OK按钮获取组合框值最有效,并且如果需要要获取值并在以后使用它,最好创建一个类,避免使用全局变量(因为类实例及其变量在tkinter窗口销毁后仍保留)(基于答案https://stackoverflow.com/a/49036760/12141765)。
import tkinter as tk # Python 3.x
from tkinter import ttk
class ComboboxSelectionWindow():
def __init__(self, master):
self.master=master
self.entry_contents=None
self.labelTop = tk.Label(master,text = "Select one of the following")
self.labelTop.place(x = 20, y = 10, width=140, height=10)
self.comboBox_example = ttk.Combobox(master,values=["Choice 1","Second choice","Something","Else"])
self.comboBox_example.current(0)
self.comboBox_example.place(x = 20, y = 30, width=140, height=25)
self.okButton = tk.Button(master, text='OK',command = self.callback)
self.okButton.place(x = 20, y = 60, width=140, height=25)
def callback(self):
""" get the contents of the Entry and exit
"""
self.comboBox_example_contents=self.comboBox_example.get()
self.master.destroy()
def ComboboxSelection():
app = tk.Tk()
app.geometry('180x100')
Selection=ComboboxSelectionWindow(app)
app.mainloop()
print("Selected interface: ", Selection.comboBox_example_contents)
return Selection.comboBox_example_contents
print("Tkinter combobox text selected =", ComboboxSelection())