Tar*_*med 3 python tkinter accelerator menubar
我正在为 tkinter 的 TOPLEVEL 菜单栏中的按钮添加加速器,用于我最近一直在研究的 python 项目,经过一些研究,我找到了一个解释如何完成此操作的站点。不幸的是,这不会激活该功能。
我一直想知道这是否是因为它绑定到按钮,而不是功能本身。
class Window:
def init_window(self):
menu = Menu(self.master)
self.master.config(menu=menu)
file = Menu(menu)
file.add_command(label="Exit", command=self.client_exit, accelerator="Ctrl+Q")
file.add_command(label="Save", command=self.save_file, accelerator="Ctrl+S")
file.add_command(label="Open...", command=self.open_file, accelerator="Ctrl+O")
menu.add_cascade(label="File", menu=file)
edit = Menu(menu)
edit.add_command(label="Undo", accelerator="Ctrl+Z")
edit.add_command(label="Redo", accelerator="Ctrl+Shift+Z")
menu.add_cascade(label="Edit", menu=edit)
view = Menu(menu)
view.add_command(label="Change Colors...", accelerator="Ctrl+Shift+C")
menu.add_cascade(label="View", menu=view)
Run Code Online (Sandbox Code Playgroud)
不幸的是,加速器没有启动。我是 Python 新手,如果这个问题很简单,我很抱歉。
您必须使用 bind_all。
Accelerator
只是一个将显示在菜单右侧的字符串
Underline
- 给选定的索引加下划线
tearoff
- 布尔值切换撕下功能
tearoff 允许您为创建浮动菜单的主窗口分离菜单。如果您创建菜单,当您单击顶部菜单项时,您将在顶部看到虚线。如果您单击这些虚线,菜单会撕裂并浮动。
from tkinter import *
def donothing(event=None):
filewin = Toplevel(root)
button = Button(filewin, text="Cool")
button.pack()
root = Tk()
menubar = Menu(root)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index",accelerator="Ctrl+H", command=donothing)
menubar.add_cascade(label="Help",underline=0 ,menu=helpmenu)
root.config(menu=menubar)
root.bind_all("<Control-h>", donothing)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)