tkinter.ttk模块中combobox下拉组件的数据选项如何绑定鼠标右击事件

我知道该组件有鼠标左击事件语句

Combobox1.bind("<<ComboboxSelected>>", func)

 

我想知道该组件是否只有这么一个鼠标左击事件可绑定?

根据我这几天的搜索信息来看似乎确实只有这一个事件。

我已经实现的功能是:

1. 可以在combobox框上绑定鼠标右击事件

2. 点击下拉框内选项可调用给定方法

示例代码如下:

from tkinter import *
import tkinter.ttk

root = Tk()
root.geometry('500x200')

def LamMatDelete_m(event):
    menubar = Menu(root, tearoff=False)
    menubar.add_command(label='modify')
    menubar.add_command(label='delete')
    menubar.post(event.x_root, event.y_root)

def LamMatChoose_m(event):
    new = Toplevel()
    new.geometry('300x200')
    Button(new,text='点击无效').grid(row=0, column=0, sticky=W, pady=4.5, padx=5)

comvallist1_m = ['Choose...', '(Customized...)']

Combobox1_m = tkinter.ttk.Combobox(root, text='Choose...', width=45)
Combobox1_m.grid(row=0, column=0, sticky=W, pady=4.5, padx=5)
Combobox1_m['value'] = comvallist1_m
Combobox1_m["state"] = "readonly"
Combobox1_m.current(0)
Combobox1_m.bind("<<ComboboxSelected>>", LamMatChoose_m)
Combobox1_m.bind("<Button-3>", LamMatDelete_m)

root.mainloop()

 

运行结果:(仅在combobox组件框上右击鼠标才会出现事件)

而我想实现的功能是:在下拉框呈现的选项上右击出现menubar,实现例如“删除选项”这样的功能:

我看到很多人的建议是自己继承父类来重写combobox组件,添加自己想要的功能,但是我看了半天ttk的代码不知道该怎么下手。我想在源代码内找到"<<ComboboxSelected>>"这个关键词来看左击事件是如何绑定的,但我没有找到。

求知道的大佬们顺手给个回答呗。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^