mieki256's diary



2022/07/30() [n年前の日記]

#1 [python][pygtk] PyGObjectがよく分からない

Python + PyGObject を勉強中だけど、どうもよく分からない…。

背景色すら指定できない。 :

Widget の背景色を変更しようとして、win.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(0, 0, 0)) と書いてみたら、Ubuntu Linux 20.04 LTS 上では特に何も言われなかったけど、Windows10 x64 21H2 + MSYS2 上では DeprecationWarning: Gtk.Widget.modify_bg is deprecated と言われてしまった。どうやら廃止予定らしい…。

代わりに何を使うのかを調べてみたら、Gtk.Widget.override_background_color() を使え、と書いてある。

_Gtk.Widget - Classes - Gtk 3.0

ならばと、win.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0.3, 0.3, 0.3)) と書いてみたら、これまた DeprecationWarning: Gtk.Widget.override_background_color is deprecated と言われる。これも廃止予定なのか…。

_Gtk.Widget - Classes - Gtk 3.0

独自のCSSスタイルを使え、とか言い出した…。どんどん複雑になってきてないか…。

PyGTKのドキュメントは見つかった。 :

PyGObject ではなく、PyGTK時代のドキュメントを探していたけど、ようやく見つけた。WebArchive に残ってた。

_PyGTK (WebArchive)
_PyGTK Reference Manual (WebArchive)
_gtk.Widget (WebArchive)

でも、公式サイトで PyGObject のドキュメントしか置いてないのは困る…。昔のドキュメントが無かったら、昔のスクリプトを今風に書き直すのも難しくなるやん…。

変換ツールがあるらしい。 :

以下のページで、pygi-convert.sh というシェルスクリプトが紹介されていた。

_Porting from Static Bindings - PyGObject
_Projects/PyGObject/IntrospectionPorting - GNOME Wiki!

./pygi-convert.sh hoge.py と打てば、PyGTK時代のスクリプトを PyGObject向けに変換してくれるらしい。中では Perl を呼び出して、PyGTK時代の書き方を PyGObject向けの書き方に置換している模様。

Ubuntu Linux 20.04 LTS 上で、以下のページのスクリプトに対して試してみたけど…。

_A Python screensaver for xscreensaver (Linux) | alvinalexander.com

残念ながら、すんなり動く状態にはならなかった。self.window なんて無い、と言われてしまう。
$ ./01_xscrsav.py 
...
  File "./01_xscrsav.py", line 50, in realize
    if self.window == None:
AttributeError: 'ScreenSaverWindow' object has no attribute 'window'

一応あちこちの単語を書き換えてくれているようではあるけれど…。

PyGTKを無理矢理インストールしてみた。 :

Ubuntu Linux 20.04 LTS 上で、Ubuntu Linux 18.04 用のパッケージ、python-gtk2 と python-gtk2-dev をDLして無理矢理インストールしてみた。

_bluetooth - "No package 'pygtk-2.0' found" on Ubuntu 20.04 even after installing python-gtk2 from archives - Ask Ubuntu

cd ~/Downloads
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-5.1ubuntu2_amd64.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2-dev_2.24.0-5.1ubuntu2_all.deb

sudo apt-get update
sudo apt-get install ./python-gtk2-dev_2.24.0-5.1ubuntu2_all.deb  ./python-gtk2_2.24.0-5.1ubuntu2_amd64.deb

一応インストールはできた。

以下のスクリプトを動かしてみたけど…。

_A Python screensaver for xscreensaver (Linux) | alvinalexander.com

一応ウインドウは表示されたものの、内部に何も表示されない。本来は Hello World という文字列が表示されるはずなのだけど…。やはり無理矢理インストールしたのがよろしくないのだろうか。

そもそも、Ubuntu Linux 20.04 LTS 上では PyGTK は廃止されて PyGObject を使えということになっているわけで…。python-gtk2* はアンインストールしておいた。

sudo apt remove python-gtk2 python-gtk2-dev

以上、1 日分です。

過去ログ表示

Prev - 2022/07 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project