Python
多くのファイルの種類では種類ごとに固有の「マジック」と呼ばれる文字列がファイルの先頭に含まれていて、これを利用してファイルの種類を識別し、更に種類ごとに追加の情報を取得して表示するfileというコマンドがあるのだが、これを端末から使う代わりにG…
ここでは「PyGTKでシステムトレイのアイコンを切り換える(前半)」のメモを踏まえた上でのサンプルコードを貼り付ける。事前にPythonのコードと同じディレクトリに2つの画像ファイルを配置しておく。 アイコン画像1 ファイル名: icon1.xpm /* XPM */ static c…
システムトレイに常駐するアプリケーションの中には、状態に応じてアイコン画像を変更するものがある。 ここでは、PyGTKを使用したシステムトレイアプリケーションにおけるアイコン変更の仕方を扱う。 アイコン変更の方法 gtk.StatusIconオブジェクトには、…
以前「cpufreqdのプロファイルを、一覧を見ながらGUIで手動変更」(cpufreqd2.1系向け)や「cpufreqd 2.2系向けのプロファイル手動切り替えスクリプト」で作成したcpufreqd用の手動プロファイル切り替えツールは起動が面倒だったため、システムトレイに常駐し…
「ウィンドウ、システムトレイ、バージョン情報ダイアログでアイコンを指定(覚え書き)」の続き。 コード例 「ウィンドウの位置とサイズを記憶し、壊さずに隠した後で再表示を行う」のコードにアイコンの処理を追加したもの。 アイコンの指定には複数の方法(…
ここでは、PyGTKを使用して、ウィンドウ(ダイアログも同様)・システムトレイのアイコンやバージョン情報ダイアログのロゴといったところでアイコン画像を指定する方法についてを扱う。 スペースの関係で、ここでは覚え書きのみを書き、コード例は別記事で扱…
QjackCtlというツールがある。これはJACKの制御を行うGUIでツールキットも別(Qt4)なのだが、メインウィンドウと一部の情報表示ウィンドウに関して、その位置とサイズを保持しつつ、表示したり隠したりすることができる。 ここでは、それにならって、PyGTKの…
「マルチスレッド処理で外部プロセスをバックグラウンド実行する」では外部プロセスをバックグラウンド実行しながら出力を端末上にそのまま表示していたが、ここではPyGTKを用いてGUIの複数行テキスト入力欄(テキストビュー)に表示する。 問題とその解決法 …
設定ファイルに対する読み込み/解析/書き込みといった処理を行うのは色々と面倒、という話を「設定ファイルの扱いを支援するPythonのモジュールについて(shlex)」で書いているが、ConfigParserというモジュールは、Windowsの.iniファイルのような書式のファ…
プログラムを実行する上で保存しておきたい設定があるときに、設定をファイルに保存することが多い*1のだが、その設定ファイルに対する読み込み/解析/書き込みといった処理を行うのは色々と面倒。 今回扱うPythonのshlex*2というモジュールは、設定ファイル…
バージョン2.10以上のPyGTKでは、gtk.StatusIconオブジェクトにより、システムトレイにアイコンを常駐させてポップアップメニューを表示することができる。また、アイコンを直接クリックしたときの処理を扱うこともできる。 下はコード例。 [任意]ファイル名…
「Pythonでgettextを使用してNLS(Native Language Support)によるメッセージの国際化を行う(作業の流れと動作確認・前半)」で扱ったPythonのテストコードの内容に関する覚え書き。 準備 以下、Pythonでgettextによりメッセージを国際化するための一連の処理…
「Pythonでgettextを使用してNLS(Native Language Support)によるメッセージの国際化を行う(作業の流れと動作確認・前半)」の続き。 作業もその最後(ja.poの作成)まで行っているものとする。 msgfmt: テキスト形式のメッセージカタログ(.po)を機械語形式(.mo…
「gettextによるメッセージ国際化(NLS: Native Language Support)の概要」ではかなり大まかな内容しか扱っていないため、実際にコードを作成してメッセージを国際化することにする。 ここで扱う言語はPythonで、他の言語では扱いが若干異なる部分もある。 今…
「urllibのダウンロードで進行状況を表示、キャッシュをせずに直接ファイルに保存」のコードをもとに、PyGTKで入力欄に入れたURLをダウンロードしてファイルに保存するシンプルなダウンローダを作成した。 コード #! /usr/bin/python # -*- encoding: utf-8 …
重い処理がメインループを邪魔してしまう 解決策の記述 重い処理がメインループを邪魔してしまう重い処理を行っている最中に、set_fraction()などを呼んでプログレスバーに対して状況の更新をしようとしても、ウィンドウが固まってしまってうまく動作しない…
PyGTKでのプログレスバーについて調べていたところでジェネレータという馴染みのない概念が出てきたので、先にこちらをまとめておく。 挙動について 関数と似た形で記述される 値を返すには(return文でなく)yield文を使用 「g = generator()」のような操作を…
何かの作業(もしくは複数の作業による全体の流れ)の進行状況をバーの形で視覚的に表現するのがプログレスバーというGUI部品(ウィジェット)。 ここでは、その使い方についてのメモをする。 以下、「メンバ関数」と表記するものはgtk.ProgressBarオブジェクト…
以前urllibモジュールを使用してファイルのダウンロードを行うコードを書いたが、このときにはurlretrieve()関数やURLopener系オブジェクトのメンバ関数retrieve()を使用していた。 これはURLの文字列と保存先の場所を指定することでサーバからデータをダウ…
GTK+では、1行テキスト入力ボックス(gtk.Entry)の隣に説明の文字列(gtk.Label)を配置するようなときに、この入力ボックスをフォーカスするためのショートカットキーをラベルのほうに表示*1し、Altキーを押しながら指定されたキーを押すことで対象のGUI部品(…
以前はgladeファイルやuiファイルを使用してユーザインターフェース部分をコードから分離して書いたのだが、分離させずにPythonのコードのみで記述することももちろんできる。ただし、書くのは色々と面倒。 コード 「PyGTK + Gladeの簡単な例」をもとにして…
「GtkBuilderとGladeについてと、PyGTK上での使用について(実際のコード・前半)」の続き。 メニュー項目の選択と選択解除のシグナル(select/deselect)は使えない? #! /usr/bin/python # -*- encoding: utf-8 -*- import sys import os try: import pygtk pyg…
「GtkBuilderとGladeについてと、PyGTK上での使用について(概要)」の続き。 「PyGTK + Gladeの簡単な例」のコードをもとにgtk.Builderオブジェクトを使用するような修正を行い、gladeファイルと同じ感覚で関数を置き換えていけばうまくいくと思ったのだが、…
C言語のlibgladeやPyGTKのgtk.glade.XMLは、ユーザインターフェース情報を外部のXMLファイルから読み込んで使用する機能を提供する。 一方で、バージョン2.12以上のGTK+でも、同様の機能が標準で組み込まれている。これはGtkBuilderと呼ばれる。 C言語版(GTK…
「Pythonで正規表現による文字列処理(検索・置換・分割)を行う」の中で、「同じパターンを複数回使用する状況下では、正規表現のコンパイルを行って正規表現オブジェクトを作成して使い回したほうが、毎回関数を呼ぶやり方より処理時間が短縮される」という…
正規表現操作を行う「re」モジュールを使用すると、文字列の高度な検索・置換・分割処理が行える。 文字列のパターンを独自のルールで記述して関数を呼ぶことで、対象文字列がこれに当てはまるかを確認することができるのだが、マッチした部分を取り出したり…
(バージョン2.0以上の)Pythonでは、Expatというライブラリが提供する機能(xml.parsers.expatモジュール)により、XML文書の構文高速にを解析することができる。 解析器の種類としてはストリーム型かつイベント駆動型となり、文書の内容を先頭から読み進めて、…
「Pythonでコマンドラインオプションの解析を行う(概要、コード例、値の確認)」の続き。 この記事で解説しているのは、その記事内のコードについてとなっている。 ヘルプ(オプション一覧)とバージョン情報の表示 OptionParserオブジェクトのメンバ関数add_op…
バージョン2.3以上のPythonでは、optparseという強力なコマンドライン引数解析のモジュールが利用できる。 OptionParserというクラスを使用するのだが、オプションの処理(値の取得やオプション名のチェック)に加え、使用法のヘルプメッセージも作成してくれ…
GUIアプリケーションのステータスバーには色々なところから表示の要求が起こり得る。例えば、メニューの項目に対するヘルプ*1と、アプリケーション内での処理の状態など、同時に複数の系統からメッセージを表示させることが考えられる。 GTK+では、それぞれ…