Python
GTK+ではDrawingAreaというGUI部品を用いることにより、その中に自由に描画を行うことができる。 GUI部品の描画はウィンドウのサイズ変更時や最小化後の最小化解除といった場面で描き直しがされるようになっているが、これもうまく処理されるようにできる。 …
「OpenOffice.orgのマクロをPythonで記述して動かす(Calc上でマクロが動作しているかのチェックと全シートのオブジェクトの取得に関するメモ)」の続き。 シート操作 シート名が存在しているかをチェックする 全シートを含むオブジェクトのメンバ関数hasByNam…
「OpenOffice.orgのマクロをPythonで記述して動かす(概要,ファイル配置,ダイアログの表示)」の続きとして、ここでは、Python-UNOを用いてOpenOffice.org Calc上でマクロが実行されているかどうかのチェックとOpenOffice.org Calcの全てのシートのデータを保…
OpenOffice.orgには専用の「OpenOffice.org Basic」という言語があり、マクロを記録したときにはこの言語で書き出されるのだが、マクロはPythonで記述することもできる。 ここでは、必要なパッケージ,スクリプトの配置,簡単なダイアログの表示までを扱う。 …
「Pythonでファイルの変更を監視する (OS非依存・PyGObject使用)」ではGLib(PyGObject/PyGTK)のメインループを用いたタイムアウト機能により定期的に監視処理を実行してファイルの変更を監視したが、ここでは参考としてPyGObjectを用いずにファイルの変更を…
「PyGObjectで gobject.GObjectクラスを継承してGObjectプロパティを用いる(前半)」の続き。 クラスとプロパティの初期化 gobject.GObjectクラスを継承したクラスの__init__()の中では必ずメンバ関数__gobject_init__()親クラスのgobject.GObject.__init__()…
PyGObjectにおいて、gobjectモジュールのクラスGObjectを継承し、適切な設定をすることにより、Python標準のプロパティよりも高度な機能を持ったGObjectプロパティを用いることができる。 動的型付けな言語であるPythonにおいて値の書き込み時の型のチェック…
ここではgobject.GObjectクラスから派生した定義済みクラスにおけるGObjectプロパティの操作のみを扱い、自分でgobject.GObjectクラスを継承してプロパティを作り設定する手順については別記事にて扱う。 PyGObjectのプロパティ PyGObjectやPyGTKのリファレ…
「NSFファイル作成に用いるWAVE-DMC 変換ツールDMC(DPCM)コンバータをWineの開発パッケージでビルドしてインストールするスクリプト」のDMC(DPCM)コンバータ(DMCconv.exe)のソースを見たところ、WindowsのMedia Control Interface(MCI)という高レベルAPIを用…
PythonのオブジェクトにおいてC#言語やVala言語にあるようなプロパティ(関連記事)を用いる方法についてを扱う。 プロパティについて再び オブジェクトのメンバ変数は、(オブジェクト指向における)オブジェクトとその利用側の管理上の理由により、直接外から…
「GNU/Linux上におけるppmckについてのその後(2010/2/2現在)」の内容を受けて、MMLファイルの変更を監視して上書き保存時にppmck(ppmckc/nesasm)でNSF変換を自動で行うツールを大幅に手直しし、GNU/Linux向けにビルドしたppmckc,nesasmの両コマンドとppmckの…
「PyGTKでテキストビュー内の文字列にスタイルを適用する」ではGTK+のテキストビューにおいてテキストタグというものを用いてスタイルを変更するということを行ったが、ここではGTK+のフォント選択ボタンを用いて選択したフォントをテキストビューの選択範囲…
「PythonでUNIXシグナルのハンドラを扱う(前半)」の続き。 UNIXシグナルハンドラ処理に関する特殊な指定 signal.signal()の2番目の引数にsignal.SIG_DFLもしくはsignal.SIG_IGNという値を指定すると、ハンドラが指定される代わりに動作を変更する。 signal.S…
Pythonスクリプトの実行中にCtrl+Cを押すと Traceback (most recent call last): File "[スクリプトの場所]", line xxx, in <module> app.main() File "[スクリプトの場所]", line xxx, in main gtk.main() KeyboardInterruptのようにKeyboardInterrupt例外が発生し</module>…
環境変数は端末シェルのbashやzshではexport、tcshではsetenvというコマンドでスクリプトから設定できるが、デスクトップ環境などでGUIを用いて環境変数を設定することはできないため、GUI上で環境変数を一覧に登録してアプリケーション下部の入力欄に入力し…
「Pythonでコマンド行のような文字列を解析してリストに格納する上でのメモ(前半)」の続き。 ダブルクォートされた部分とそうでない部分とをうまく処理する 色々試した結果、ダブルクォート文字を区切りとして元の文字列を分割してやることでダブルクォート…
文字列メソッドsplit()ではスペースを含んだダブルクォートされたまとまりを処理できない Pythonの文字列オブジェクトにはsplit()というメンバ関数があり、文字列中の特定の文字を区切りとしてリストに分割することができるのだが、コマンド行のような文字列…
「Wine上のppmckで.mmlファイルを.nsfファイルに変換する処理を自動化するPythonスクリプト(2009/12/7版)」のスクリプトを作成した上での幾つかのメモを扱う。 Pythonのshutil shutilというモジュールを用いると端末シェル上のファイル操作系コマンドのよう…
ライブラリGLibのメインループには定期的に関数を呼び出す仕組みがあり、「PyGTK上のタイマー処理について」で扱っている。これを用いてファイルのタイムスタンプを定期的に取得し、前回の結果と比較するようにすることで、ファイルが変更されるのを監視し、…
バージョン2.5以上のPythonではctypesというモジュールを用いて任意のC言語ライブラリを読み込んでその中の関数を呼び出すことができる。 整数や文字列でないデータ(Pythonの変数)は型を指定する関数を呼んで渡す必要があるなど、扱う上での注意点は色々とあ…
「PythonでZIPファイルを展開する(メモ)」の続き。 ここでは、前回のメモの内容を踏まえた上で作成した、ZIPファイルを展開するPythonのコード例を貼り付ける。ファイル名についてはWindows上で日本語を含むもの(エンコーディングがCP932な場合)にも対応した…
Pythonではzipfileというモジュールを用いることによりZIP書庫の読み書きが行える。 ここでは既存のZIP書庫の展開をPythonで行う処理を扱う。 ZIP書庫を扱うオブジェクト zipfile.ZipFileオブジェクトを用いる。 開くときにファイル名とモードを指定 閉じる…
「cfgforsfをドラッグ・アンド・ドロップで使用するためのGUIフロントエンドを作成」のgtk-cfgforsfと同様にしてTTAエンコード/デコード用のコマンドttaencをドラッグ・アンド・ドロップで使用するためのGUIツールを作成し、 kakurasan.ehoh.net/software/gt…
Pythonにおけるクラスのメンバは基本的に外部から直接参照可能(公開されている状態)となっているが、先頭にアンダースコア(「_」の文字)が2つ付いた名前のメンバは内部的に別の名前に変更され(難号化/mangle)、外部からの参照を禁止することができる。これに…
プログラム内のある設定などに関する複数の「オン/オフ」形式の情報をまとめて扱えると便利なことがある。そうしたとき、真偽値型データの配列を用意したりするのではなく、2進数の性質を用いて1つの整数のみを用いてその中で複数の「オン/オフ」情報を出し…
最近開いたファイルを管理するオブジェクト バージョン2.10以上のGTK+ではファイル選択ダイアログの中で最近開いたファイルを一覧してその中から項目を選択することができるようになっている。 「最近開いたファイル」という項目が左上にある ところが、GTK+…
「Pythonで正規表現による文字列処理(検索・置換・分割)を行う」ではPythonで正規表現を使用した操作についてを扱っているが、この機能を使用してGUI上でテキストを置換するツールを作成した。GtkBuilderファイルを使用しているため、実行にはバージョン2.12…
Pythonは文字列をUnicodeで扱うことができるため、正規表現においても日本語を正しく扱うことができる。Python 2では処理時にパターンと入力文字列の両方をUnicode文字列にしておく必要がある。 Unicodeのコードによる指定を行うことにより、コード範囲によ…
これまでに書いたPyGTKのコードの中で、何か重い処理をさせているときに(メインループに処理が回らないことにより)GUIが固まってしまうのを避けるために幾つかの方法を使用してきた。ここではそれらをまとめておく。 スレッドを使用する マルチスレッド化し…
ダイアログと親ウィンドウについて ダイアログを作成すると、そのダイアログに対するメインループがメインウィンドウのループの中で開始され、多重のメインループになる。このとき、ダイアログ側に対する操作は受け付けるが、メインウィンドウ側をいじること…