ビックリ、Fedora 36 に何故か Python2 が入っていた!
Gimp にくっ付いてきたのか、PyGtk まで。
てか Gimp で使う Python って 2 のままなのかよ。
そりゃ Gimp 自体が GTK2 だし。
GTK って今は GNU Tool Kit という意味だし。
もしかして開発止まっている?
別の SVG エディタを探すか、mac で探したほうがいいような。
ということで平日は軽く GTK4 でクリップボード。
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '4.0') from gi.repository import Gtk, Gdk class Win(Gtk.ApplicationWindow): ''' GTK4: Clipboard Copy and Peast ''' def __init__(self, a): Gtk.ApplicationWindow.__init__(self, application=a) # Copy Button cbutton = Gtk.Button(label='Copy') cbutton.connect('clicked', self.on_button_c_clicked) # Paste Button pbutton = Gtk.Button(label='Paste') pbutton.connect('clicked', self.on_button_p_clicked) # Entry self.entry = Gtk.Entry() #pack box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) box.append(cbutton) box.append(pbutton) box.append(self.entry) self.set_child(box) def on_button_c_clicked(self, button): # entry text text = self.entry.get_buffer().get_text() clipboard = button.get_clipboard() clipboard.set(text) def on_button_p_clicked(self, button): clipboard = button.get_clipboard() clipboard.read_text_async(None, self.on_read_text_async) def on_read_text_async(self, clipboard, res): text = clipboard.read_text_finish(res) self.entry.get_buffer().set_text(text, -1) def app_activate(a): w = Win(a) w.present() app = Gtk.Application() app.connect('activate', app_activate) app.run()
文字列以外はあまり使わないと思うので文字列特化。
最初 init で文字列を入れようとしたけど全然駄目だった。
クリップボードは init を抜けてから操作しましょう。
GtkClipboard が GdkClipboard に代わっているけど GTK3 とほぼ同じ。
get_clipboard はどの Widget でもいいみたい、変な感じだけど。
set_text がバインドされていなくて戸惑うけど実はコレでいい。
読み込みは非同期にしないと上手くいかないみたい。
WordPress が 6.0 になった動作確認書き込みでした。