GTK4: Shortcut

GTK4 には ShortcutController というものがあった。
あれ?筆者は以前嘘を書いてしまったのかな??

Gtk.ShortcutController

そう思って調べてみるとコレはアプリ全体のショートカット指定ではない。
Widget 毎にショートカットを設定するものってことみたい。
何が違うんだよって感じはしなくはないですけど。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python3
 
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
 
class Win(Gtk.ApplicationWindow):
    '''
        GTK4: Sample Code
    '''
    def __init__(self, a):
        Gtk.ApplicationWindow.__init__(self, application=a, title='GTK4')
        # Shortcut
        t = Gtk.ShortcutTrigger.parse_string('<Control>Z')
        a = Gtk.SignalAction(signal_name='clicked')
        s = Gtk.Shortcut(trigger=t, action=a)
        c = Gtk.ShortcutController()
        c.add_shortcut(s)
        # Button
        b = Gtk.Button(label='Test')
        b.connect('clicked', self.on_button_clicked)
        b.add_controller(c)
        self.set_child(b)
 
    def on_button_clicked(self, widget):
        print('Clicked!')
 
def app_activate(a):
    w = Win(a)
    w.present()
 
app = Gtk.Application()
app.connect('activate', app_activate)
app.run()

こんな感じ。

これで Ctrl+z でも clicked シグナルを発生できます。
ところで公式は GtkBuilder 形式にて activate を指定しています。

1
a = Gtk.ActivateAction()

でもいいです、こちらだとボタンが押された GUI アクションを行なわれます。
ただ activate と clicked 両方のシグナルが発生しますので扱いに注意。

ということでゴールデンウイークラストは花。

poppy

フラワーパーク江南にてシャーレーポピーが満開です。
くーるまにポピー♪って古い!

poppy

日本語名はヒナゲシです。
おっかのうえヒーナゲシのはーなでー♪だから古い!

sirotumekusa

一面にシロツメクサが咲き誇っています。
シロツメクサの♪花が咲いたら♪さあ♪いこー♪ラスカール!

花は素晴らしい、行けば必ず撮れるもん。
それよりデジイチを持っている人が沢山いるから浮かないのがいい。
ところで 17mm パンケーキとプロレンズの差を今更ながら痛感する。
去年まではボケの奇麗さなんて気にしなかったのに困った。