python+gtk3给插件添加快捷键

通过上一节内容Gtk给按钮添加快捷键的讲解,我们了解到Gtk开发中如何给插件添加快捷键的方法,那么python+gtk3的开发中如何给按钮添加快捷键呢?其实也很简单,在python的gi库中也有相应方法的实现。

方法一:

使用Gtk.AccelGroup

1.首先介绍几个我们使用的方法:

Gtk.AccelGroup.new()

功能简介:
用于创建一个新的组合器,一个组合器可以绑定一组组合键。

Gtk.Widget.add_acceleratorr(widget,accel_signal,    
           accel_group, accel_key, accel_mods, accel_flags)

参数介绍:
widget:要绑定组合按键的插件
accel_signal:(str)按下热键后要激活的控件的信号
acc_group:(Gtk.AccelGroup)指定一个组合器(上一个函数创建),这个 accel group将被分配给TopLevel的控件 (主窗体)
accel_key:(int) GDK键值 我们要分配的热键
accel_mods:(Gdk.ModifierType)组合键(Shift Ctrl之类的)
accel_flags:(Gtk.AccelFlags)组合键参数,如设置是否可见
功能简介:
用于给插件添加热键或者组合按键,当组合键按下时激发相应的插件的信号,执行关联的回调函数。

Gtk.Window.add_accel_group(window,accel_group)

参数简介:
window:(Gtk.Window),所创建gui的主窗体
accel_group:(Gtk.AccelGroup)键盘按键组合器,用于添加给主窗体
功能简介:
该函数用于将创建的组合器accel_group添加到主窗体,只有这样当主窗体获得焦点时,程序才能监视组合器中的组合按键,当组合键按下时,触发相应插件的信号,执行回调函数。
2.小程序

#!/usr/bin/env python2

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class mywindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Hello World")
        self.button = Gtk.Button(label="Click Here")
        gag = Gtk.AccelGroup.new()
        Gtk.Widget.add_accelerator(self.button,"clicked",gag,69,
        Gdk.ModifierType.MOD1_MASK,Gtk.AccelFlags.VISIBLE)
        self.button.connect("clicked",self.on_button_clicked)
        self.add(self.button)
        Gtk.Window.add_accel_group(self,gag)

    def on_button_clicked(self, widget):
        print("Hello World")

win = mywindow()
win.connect("delete-event",Gtk.main_quit)
win.show_all()
Gtk.main()

在终端执行如下命令给python程序添加可执行权限并执行:

chmod a+x helloword.py
./helloword.py

点击helloword按钮,终端输出Hello world,按下alt+e组合键,终端输出Hello world,至此python+gtk3给给插件绑定组合键设置成功。

方法二 :

使用带快捷按键的按钮:

Gtk.Button.new_with_mnemonic(label)
label:按钮上面显示的助记符,助记符前面会有下划线
这个函数用于创建一个按钮,并把按钮后面第一个字符作为快捷按键。

小程序:

#!/usr/bin/env python2

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class mywindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Hello World")
        self.button = Gtk.Button.new_with_mnemonic("_Hello world"
        )
        self.button.connect("clicked",self.on_button_clicked)
        self.add(self.button)

    def on_button_clicked(self, widget):
        print("Hello World")

win = mywindow()
win.connect("delete-event",Gtk.main_quit)
win.show_all()
Gtk.main()

此时程序的快捷键变为”alt+h“

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值