ビックリ、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 になった動作確認書き込みでした。