Gtk 4.10 にこんな class が追加されていた。
いやえっと、ファイルからアプリを起動するなら gio コマンドでよくね?
#!/usr/bin/env python3 import gi, subprocess gi.require_version('Gtk', '4.0') gi.require_version('Adw', '1') from gi.repository import Gtk, Adw, Gio PICFILE = './test.jpg' class Win(Gtk.ApplicationWindow): ''' Default App Launcher: Sample Code ''' def __init__(self, a): # Set Adwaita Style manager = Adw.StyleManager.get_default() manager.set_color_scheme(Adw.ColorScheme.DEFAULT) # init Gtk.ApplicationWindow.__init__(self, application=a) # button button = Gtk.Button(label='Launch test.jpg') button.connect('clicked', self.on_button_clicked) self.set_child(button) def on_button_clicked(self, button): subprocess.run(['gio', 'open', PICFILE]) app = Gtk.Application() app.connect('activate', lambda a: Win(a).present()) app.run()
みたいに。
GtkUriLauncher もある、gio コマンドは URI でもイケるんだが。
とはいえ、わざわざ追加したということは何かあるんだろうなって。
とっとと試してみる、使い方は GtkFileDialog と同じみたいね。
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '4.0') gi.require_version('Adw', '1') from gi.repository import Gtk, Adw, Gio PICFILE = './test.jpg' class Win(Gtk.ApplicationWindow): ''' GtkFileLauncher: Sample Code ''' def __init__(self, a): # Set Adwaita Style manager = Adw.StyleManager.get_default() manager.set_color_scheme(Adw.ColorScheme.DEFAULT) # init Gtk.ApplicationWindow.__init__(self, application=a) # button button = Gtk.Button(label='Launch test.jpg') button.connect('clicked', self.on_button_clicked) self.set_child(button) def on_button_clicked(self, button): f = Gio.File.new_for_path(PICFILE) # GtkFileLauncher launcher = Gtk.FileLauncher(file=f) launcher.launch(self, None, self.on_launch_finish) def on_launch_finish(self, launcher, res): try: result = launcher.launch_finish(res) if result: print('Success') else: print('Failed') except Exception as e: print(f'Launch Error: {e}') app = Gtk.Application() app.connect('activate', lambda a: Win(a).present()) app.run()
そういうことか!
デフォルトアプリではなく何で開くかを選択できる、ということだった。
てか GtkAppChooserDialog の後継でした、名前がまぎらわしいわ!
デフォルトアプリ起動なら上のコードほうが簡単です、と一言。
ということで。
今日が囀り続けるキビタキを三十分追いかけ、とうとう一枚も撮れず。
ヤケクソで午後はキジを探したら、ものすごく遠くにしか出てこないし。
あきらめて帰ろうと思ったところにヒバリが現れてくれました。
ヒバリのトサカって正面から見るとこんな感じなんだね。