Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从绑定事件检索Tkinter中的组合框名称_Python 3.x_Tkinter_Combobox - Fatal编程技术网

Python 3.x 从绑定事件检索Tkinter中的组合框名称

Python 3.x 从绑定事件检索Tkinter中的组合框名称,python-3.x,tkinter,combobox,Python 3.x,Tkinter,Combobox,我试图在tkinter python中创建一个设置窗口,我试图为所有combobox创建相同的回调函数,但我不知道如何识别哪个combobox是调用方。示例代码: def Open_settings_Form(): def callbackFunc(event): print(event.widget.current()) global SETTINGS Settings_Form = Toplevel(Main_Form) Settings_F

我试图在tkinter python中创建一个设置窗口,我试图为所有combobox创建相同的回调函数,但我不知道如何识别哪个combobox是调用方。示例代码:

def Open_settings_Form():
    def callbackFunc(event):
        print(event.widget.current())

    global SETTINGS
    Settings_Form = Toplevel(Main_Form)
    Settings_Form.title("LOG Settings")
    Settings_Form.geometry('900x300')  

    labelTop = Label(Settings_Form, text = "Log Parsing Order")
    labelTop.grid(column=0, row=0)

    combo0 = ttk.Combobox(Settings_Form, state="readonly", values=Log_Fields)
    combo0.bind("<<ComboboxSelected>>", callbackFunc)
    combo0.current(SETTINGS['LOG_Order'][0])
    combo0.grid(column=0, row=1)
    combo1 = ttk.Combobox(Settings_Form, state="readonly", values=Log_Fields)
    combo1.bind("<<ComboboxSelected>>", callbackFunc)
    combo1.current(SETTINGS['LOG_Order'][1])
    combo1.grid(column=1, row=1)
    combo2 = ttk.Combobox(Settings_Form, state="readonly", values=Log_Fields)
    combo2.bind("<<ComboboxSelected>>", callbackFunc)
    combo2.current(SETTINGS['LOG_Order'][2])
    combo2.grid(column=2, row=1)
    combo3 = ttk.Combobox(Settings_Form, state="readonly", values=Log_Fields)
    combo3.bind("<<ComboboxSelected>>", callbackFunc)
    combo3.current(SETTINGS['LOG_Order'][3])
    combo3.grid(column=3, row=1)

非常感谢

您可以将名称传递给您的
组合框
小部件,并通过
事件.小部件
回调检索它

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

def details(event):
    print (event.widget)

combo1 = ttk.Combobox(root,name="box1")
combo1["values"] = ("A","B","C")
combo1.pack()
combo1.bind("<<ComboboxSelected>>",details)

combo2 = ttk.Combobox(root,name="box2")
combo2["values"] = ("D","E","F")
combo2.pack()
combo2.bind("<<ComboboxSelected>>",details)

root.mainloop()
将tkinter作为tk导入
从tkinter导入ttk
root=tk.tk()
def详细信息(事件):
打印(event.widget)
combo1=ttk.Combobox(root,name=“box1”)
组合1[“值”]=(“A”、“B”、“C”)
combo1.pack()
combo1.bind(“,详细信息)
combo2=ttk.Combobox(root,name=“box2”)
组合2[“值”]=(“D”、“E”、“F”)
combo2.pack()
combo2.bind(“,详细信息)
root.mainloop()

谢谢,调用event.widget。\回调函数中的name给出了该名称。您需要该名称,还是需要对实际widget对象的引用?
import tkinter as tk
from tkinter import ttk

root = tk.Tk()

def details(event):
    print (event.widget)

combo1 = ttk.Combobox(root,name="box1")
combo1["values"] = ("A","B","C")
combo1.pack()
combo1.bind("<<ComboboxSelected>>",details)

combo2 = ttk.Combobox(root,name="box2")
combo2["values"] = ("D","E","F")
combo2.pack()
combo2.bind("<<ComboboxSelected>>",details)

root.mainloop()