2019-12-29

PyGObject を試す

GObject (GLib Object System) は、GTK+ のすべてのウィジェットおよび関連するオブジェクトの基底クラスからなるオブジェクトシステムと、言語間の透過的相互運用性を提供するライブラリです。GObject は C 言語で実装されており、バインディングによって他の言語から利用可能となっています。

PyGObject は GObject へのバインディングを提供する Python パッケージです。

Wikipedia より引用・編集

Fedora 31 の場合

参考サイト [1] の Fedora の設定を確認したところ、必要な環境が揃っていたので、参考サイト [2] に紹介されている二つの Hello World を少々アレンジして試してみました。

まずは、参考サイト [2] に紹介されている最初のサンプル、ウィンドウのタイトルに文字列を設定するだけの単純なスクリプトを試しました。

hello.py
hello.py の実行例

次に、ボタンをクリックすると文字列をコンソール上に出力するスクリプトです。

hello2.py
hello2.py の実行例
hello2.py のボタンをクリック時の出力例
[bitwalk@fedora-pc PyGObject_samples]$ python hello2.py
こんにちは、世界!
こんにちは、世界!

どちらも特に問題なく実行できました。

Windows 10 の場合

参考サイト [1] の Windows の設定では、MSYS2 を利用して、pacman で実行環境を整えます。上記 Linux (Fedora) で作成したスクリプトファイルを UTF-8 のエンコードのまま実行できるかを確認しました。

まず最初の hello.py では問題なくタイトル文字が表示されました。

hello.py の実行例 (Windows 10)

hello2.py でも問題なくウィジェット上の文字が表示されました。

hello2.py の実行例 (Windows 10)

しかし、コンソール上の文字列出力は化けてしまいました。

hello2.py の実行例 (Windows 10) 文字列出力結果 (1)

MSYS のコンソールのロケールを ja_JP、文字セットをシフト JIS (SJIS) に設定してみました。

MSYS mintty のオプション設定

再度 hello2.py を起動してボタンをクリックすると、今度は正常に表示されました。

hello2.py の実行例 (Windows 10) 文字列出力結果 (2)

コンソール上の文字コードが SJIS のままだと vim でコンソール上で UTF-8 のファイルを編集する場合に支障が出ますが、運用方法を工夫することでなんとかなりそうです。

雑感

Python による GUI プログラミングはもっぱら wxPython を使っていましたが、Linux (Fedora) のデスクトップ環境が GNOME なので、自分で作る GUI アプリの UX を GNOME に揃えようと PyGTK をやってみようかと調べたところ、今では PyGObject を使うべしということだったので試してみました。Windows 上でも MSYS2 を利用すれば、Linux 上で作成した同じスクリプトファイルを実行できそうです。Linux で開発したアプリをそのまま Winodws で実行できるのは魅力です。考えてみると wxPython でも同じことができるはずなので、どちらが良いかではなく、選択肢が多い事を喜ぶことにします。

まずは PyGObject を使いこなせるように、ウィジェットの使い方やレイアウトの調整方法をまとめる予定です。

参考サイト

  1. Getting Started — PyGObject
  2. 2. Getting Started — Python GTK+ 3 Tutorial 3.4 documentation
  3. MSYS2 MinGW GCC環境をつくる(その1) [2018-01-30]

 

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: