加速器在Python Tkinter中不起作用:如何修复

时间:2019-05-08 12:53:24

标签: python tkinter menubar accelerator

我正在将tkinter的TOPLEVEL菜单栏中的按钮上的加速器添加到我最近正在研究的python项目中,并且进行了一些研究后,我找到了一个网站解释如何实现此目的。不幸的是,这不能激活该功能。

我一直想知道这是否是因为它绑定到按钮而不是功能本身。

        <Button  Grid.Column="1"
                 Foreground="White" 
                 HorizontalAlignment="Center" 
                 Margin="223,105,81,20" 
                 x:Name="buttonSet"
                 Height="26"
                 Click="ButtonSet_Click"
                 Background="#7289da"
                 Width="90">
            set
            <Button.Style>
                <Style TargetType="Button">
                    <Style.Triggers>
                        <Trigger Property="IsPressed" Value="true">
                            <Setter Property="Background" Value="#FF23FF00"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

不幸的是,加速器没有激活。我是Python的新手,如果这个问题很简单,请抱歉。

1 个答案:

答案 0 :(得分:0)

您必须使用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()