加速器在 Python Tkinter 中不工作:如何修复
Accelerators not working in Python Tkinter : How to fix
我正在将加速器添加到 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)
很遗憾,加速器没有激活。我是 Python 的新手,很抱歉这个问题很简单。
你必须使用 bind_all。
Accelerator
只是一个字符串,将显示在菜单的右侧
Underline
- 为所选索引加下划线
tearoff
- 切换撕下功能的布尔值
tearoff allows you to detach menus for the main window creating
floating menus. If you create a menu you will see dotted lines at the
top when you click a top menu item. If you click those dotted lines
the menu tears off and becomes floating.
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()
我正在将加速器添加到 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)
很遗憾,加速器没有激活。我是 Python 的新手,很抱歉这个问题很简单。
你必须使用 bind_all。
Accelerator
只是一个字符串,将显示在菜单的右侧
Underline
- 为所选索引加下划线
tearoff
- 切换撕下功能的布尔值
tearoff allows you to detach menus for the main window creating floating menus. If you create a menu you will see dotted lines at the top when you click a top menu item. If you click those dotted lines the menu tears off and becomes floating.
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()