2020-10-17

【備忘録】HeaderBar のつかいみち (PyGObject)

GUI アプリを作るのに必要なライブラリに何を使うかはいつも悩むところです。メインの開発環境の Linux (Fedora) では、デスクトップ環境に GNOMEGTK 系)を使っているため、Python で GUI 向けのプログラミングをするときには、デスクトップ環境と見映えが揃う PyGObject(GTK 系)を利用することが多くなりました。

Windows 上でも MSYS2 をインストールすれば、同じように PyGObject を利用できるので、逆に Windows の UI と見栄えが変わることを気にせずに PyGObject を使い続けていました。

仕事で使えるちょっとした GUI アプリを作って、便利なアプリが出来たと悦に浸っていたのですが…。アプリをチームで共有しようと考えたとき、(パッケージ化やインストールなど)手軽さの観点で、最終的に wxPython で書き換えることにしました。😭

GUI ライブラリを変えたって、同等な機能は実現できるので別にいいんですが、PyGObject で利用していた Gtk.HeaderBar は GUI としてユニークなので、備忘録として使い方をまとめました。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 33 beta (Workstation Edition) x86_64
» Python 3.9.0 (python3-3.9.0-1.fc33.x86_64)

HeaderBar

Gtk.HeaderBar はウィンドウのタイトルバーの部分に配置され、その上にボタンウィジェットなどを配置してメインのウィンドウのコントロールをします。また、ウィンドウを閉じる × ボタンなどの表示もコントロールします。

HeaderBar のサンプルとして、画像を閲覧するプログラムを紹介します。

gtk_headerbar.py

タイトルバーに表示されている矢印アイコンをクリックして、画像を閲覧するだけのプログラムです。サンプルですので、元画像の横縦比率は 3:2 に揃えてあります。

gtk_headerbar.py の実行例

ここで紹介したコードと画像は Github に公開していますので、ご興味があれば下記を git clone してご利用ください。

  • https://github.com/bitwalk123/PyGObject_samples.git

ミニマリストな用途に◎

PyGObject の学習でお世話になっているサイト [3] の説明やサンプルでは、HeaderBar の魅力がさっぱり分かりませんでした。しかし、使ってみると、ヘッダー(タイトルバー)にウィジェットを配置するので、UI のシンプルさと直観的な操作を追求できると思いました。汎用アプリと違い、自分が作るアプリは専業用途ばかりなので、ごちゃごちゃメニューやアイコンを表示せずに、見栄えや操作をできるだけ単純にした方が良い場合がほとんどです。そういうわけで、タイトルバー上に操作用の最小限の操作、コントロール用のウィジェットを付ける、というのもアリなのです。🤗

Windows でも試しました

ちなみに、Windows 10 / MSYS2 環境下で同じプログラムを実行すると、Linux / GNOME 環境とほとんど同じ、言い換えれば Windows らしくない UI が表示されます。GNOME ではデフォルトで最大化、最小化するボタンが表示されませんが、Windows では表示されますので、ウィンドウのサイズを固定しても最小化するボタンは表示されます。

gtk_headerbar.py の実行例 (Windows 10 / MSYS2)

参考サイト

  1. Gtk.HeaderBar - Classes - Gtk 3.0
  2. Gtk(PyGObject) Tips | Draw(画像,PDF,SVG,図形) - Paepoi
  3. 6. Layout Containers — Python GTK+ 3 Tutorial 3.4 documentation

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

0 件のコメント: