啊啊啊阿毓 2021-02-11 00:21 采纳率: 0%
浏览 632

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>>"这个关键词来看左击事件是如何绑定的,但我没有找到。

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:16
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

悬赏问题

  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
  • ¥15 写51单片机程序代码,代码好难,需要外部中断还有电子时钟的,还有按键修改电子时钟,请大家积极讨论
  • ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
  • ¥15 AD9910输出波形向上偏移,波谷不为0V
  • ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘
  • ¥15 抖音直播广场scheme
  • ¥15 为什么我明明有这个文件调试器还显示错误?