Skip to main content
 首页 » 编程设计

python之如何分配热键

2025年05月04日8kuangbin

请帮助将热键分配给顶部条目菜单“OPEN”。

import tkinter 
 
def fileOpen(): 
    print('qwerty') 
 
def makeMenu(parent): 
    top = tkinter.Menu(parent)  
    parent.config(menu = top)                            
 
    file = tkinter.Menu(top, tearoff = False) 
    file.add_command(label = 'Open...', command = fileOpen, accelerator = 'ctrl+o') 
    top.add_cascade(label = 'File', menu = file) 
 
    #top.bind_class(top, '<Control-Key-o>', fileOpen) 
 
root = tkinter.Tk() 
 
makeMenu(root) 
 
root.mainloop() 

我需要按“CTRL + O”运行函数“fileOpen”

请您参考如下方法:

你需要:

  1. 将 fileOpen 绑定(bind)到根窗口 (root) 而不是菜单栏 (top)。

    <
  2. 让 fileOpen 接受一个参数,当您按下 Ctrl+o 时,该参数将被发送给它。

下面是解决这些问题的脚本版本:

import tkinter 
 
###################### 
def fileOpen(event): 
###################### 
    print('qwerty') 
 
def makeMenu(parent): 
    top = tkinter.Menu(parent)  
    parent.config(menu = top)                            
 
    file = tkinter.Menu(top, tearoff = False) 
    file.add_command(label = 'Open...', command = fileOpen, accelerator = 'ctrl+o') 
    top.add_cascade(label = 'File', menu = file) 
 
 
root = tkinter.Tk() 
 
############################################ 
root.bind_all('<Control-Key-o>', fileOpen) 
############################################ 
 
makeMenu(root) 
 
root.mainloop() 

我改的东西在评论区。