Python 使用tkinter的Menu菜单command参数与bind方法共用触发事件

用普通函数作为媒介,使用event_generate()方法模拟触发bind()事件来创建一个模拟的event对象,并将其传递给绑定的事件处理函数。

运行结果

示例代码

import tkinter as tk

# 菜单事件
def menuEvent(event):
    print(event.x, event.y)
    label.config(text=f'鼠标在屏幕上的坐标\n{event.x} {event.y}')

# 普通函数
def func(string):
    if string == '新建':
        base.event_generate("<Control-Key-n>")

base= tk.Tk()

# 创建菜单栏
menubar = tk.Menu(base)
base.config(menu=menubar)

# 创建二级菜单
fileMenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='文件', menu=fileMenu)

# 二级菜单添加选项
fileMenu.add_command(label='新建', accelerator='Ctrl+N', command=lambda: func('新建'))

label = tk.Label(base)
label.pack()

# 捆绑菜单事件
base.bind("<Control-Key-n>", menuEvent)

base.mainloop()

作者:周华

创作日期:2023/11/10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值