「pygtkを始めてみた」の編集履歴(バックアップ)一覧はこちら
「pygtkを始めてみた」(2010/01/21 (木) 00:04:56) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
[[pygtkで遊ぼう(14) 四角くないWindow編 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20080121/1200928127]]
PyGTKだと、一部が透過されたウィンドウというか、その名の通り『四角くないWindow』が簡単に表示できそうだったので、PyGTKを始めてみる。
*便利なもの
-[[Python ライブラリリファレンス>http://www.python.jp/doc/2.5/lib/contents.html]]
-[[PyGTK 2.0 Reference Manual>http://library.gnome.org/devel/pygtk/stable/]]
-[[GTK v1.2 チュートリアル(日本語版)>http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja.html]]
* インストール
上記のページのソースコードをそのままコピペでうまくいったのでとりあえずOK。
Gimpでlogo.pngという名前で透過なpng画像を作成した後、
logo.pngをコピペしたソースコード(windowtest.py)と同じディレクトリへ配置して、
$ python windowtest.py
を実行したら問題なくうまくいった。
一つ、気をつけなければならなかったことは、
#-*- coding: utf-8 -*-
をソースコードの最初に記述しておかないと、
たとえコメントであってもASCII文字以外がソースコード中に出現すると
以下のようなエラーを出してしまうので注意。
SyntaxError: Non-ASCII character '\xe3' in file windowtest.py on line 24, but
no encoding declared; see http://www.python.org/peps/pep-0263.html for details
*いじってみた
[[LinuxMania: PyGTK を使ってみよう その1(Pyhton入門)>http://www.linuxmania.jp/howto_pygtk.html]]
ここが何かと参考になりそう。
サンプルプログラムを実行する際に一つ注意点が
emacsで編集する際にファイル先頭で
# -*- coding:UTF-8 -*-
というように文字コードを指定して保存しようとすると
It is highly recommended to fix it before writing to a file.
Warning (mule): Invalid coding system `UTF-8' is specified
for the current buffer/file by the :coding tag.
と怒られる。
調べてみると、同じ症状が出ている人がいた
-[[mamamotoの日記>http://d.hatena.ne.jp/mamamoto/]]
ここによると
# -*- coding: utf-8 -*-
のように文字コード指定を小文字で行うと治るらしい。
おお、治った。
他にも
-[[PyGTK 2.0 Tutorial>http://www.pygtk.org/pygtk2tutorial/]]
-[[PyGTK 2.0 Reference Manual>http://library.gnome.org/devel/pygtk/stable/]]
が英語だけど参考になります。
Pythonでのクラスの実装については
-[[Python のクラスシステム>http://www.shido.info/py/python7.html]]
-[[python:クラス名の取得: __class__.__name__ - Windows Live>http://hdknr.spaces.live.com/Blog/cns!82BB74511E950AA4!1822.entry]]
-[[9. クラス>http://www.python.jp/doc/2.4/tut/node11.html]]
-[[Python プログラミング>http://hehe.s9.xrea.com/html/python.rst.html#c-python]]
が参考になります。
**gtk.EventBoxについて
透過PNGをWindowの装飾無しで表示できる所までは、サンプルプログラムの通り。
これを、『クリックした時に何か起こす』とかイベント処理と絡めるためには
img = gtk.Image()
img.set_from_file(imageName)
img.connect('button_release_event', self.say_hello)
ということができれば良いのだが、これだと実際に動かしてみてクリックしても何も起こらない
その理由は、「ImageウィジェットがXのイベントを受け取らないから」で、詳しくはこちらに記述してある。
-[[Chapter 13. Xと関連のないウィジット>http://book.geocities.jp/gtkmm_ja/docs/tutorial/html/chapter-widgets-without-xwindows.html]]
Pythonではないが、GTKの処理自体は同じなので参考になる。
そのために用いるのが「EventBoxウィジェット」で、次のように使う。
ebox = gtk.EventBox()
img = gtk.Image()
img.set_from_file(imageName)
self.add(ebox)
ebox.add(img)
ebox.connect('button_release_event', self.say_hello)
この様に先ほどのプログラムを変更する。
参考:
-[[gtk.Image>http://www.pygtk.org/docs/pygtk/class-gtkimage.html]]
-[[gtk.EventBox>http://www.pygtk.org/docs/pygtk/class-gtkeventbox.html#method-gtkeventbox--set-above-child]]
-[[Gtk::ScrolledWindow と Gtk::EventBox の順番>http://www.hakodate-ct.ac.jp/~tokai/tokai/gtkmm/app/p3.htm]]
-[[pygtkで遊ぼう(5) gtk.EventBox編 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20071022/1193149527]]
**Python で Linux コマンドを実行する
import commands
print commands.getoutput("date")
この2文で実現可能なようです
ただし、Pythonインタプリタ上だと date のようにLANG環境変数の設定によって日本語で出力するようなコマンドでは、文字化けする場合あり
-[[Python で Linux コマンドを実行する - Decchiの日記>http://d.hatena.ne.jp/Decchi/20091121/1258823982]]
**ハンドラ関数の引数はシグナルの種類によって異なる場合がある
-[[2008-05-24 - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20080524]]
-[[PyGTK + Gladeのアプリケーションにおけるハンドラ関数について(後半) - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20080525/p1]]
**print文について
-[[とりあえず: -Python-お勉強- Python入門(16) - printステートメント>http://atkonn.blogspot.com/2008/02/python-python16-print.html]]
**マウス関係のイベント処理
-[[〈 SL 〉: PyGTK を使ったカスタム・ウィジットの書き方>http://po3a.blogspot.com/2006/09/pygtk.html]]
-[[GTK/GDK/gladeによるプログラムメモ>http://kota.steeludon.com/gtk/line.html]]
**実行時のデフォルトの表示位置について
gtk.Window.set_position()
で設定できるみたいです。
ここで設定できる定数は
-gtk.WIN_POS_CENTER -- 画面の中央に表示
-gtk.WIN_POS_MOUSE -- 現在のマウスの位置に表示
-gtk.WIN_POS_CENTER_ALWAYS -- サイズが変更されたりしたときも、いつも中央に表示
-gtk.WIN_POS_CENTER_ON_PARENT -- 親ウインドウの中央に表示
の4つです
-[[pygtk覚え書き Windowを画面中央に表示 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20071204/1196765105]]
右下に表示したいという場合は、こちらが参考になるかも
-[[gtk.Window>http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--move]]
**D&Dの処理について
-[[PyGTKでファイルマネージャからファイルアイコンをドラッグ・アンド・ドロップを受け取る(URIリストの加工と環境による違いの吸収) - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20090305/p1]]
**設定ファイルの読み書きについて
-[[9.2 ConfigParser -- 設定ファイルの構文解析器>http://www.python.jp/doc/2.5/lib/module-ConfigParser.html]]
-[[Perl Tips | Python で、設定ファイルを読み込む方法 (ConfigParser)>http://perltips.twinkle.cc/python/configparser.php]]
-[[Pythonでの設定ファイルの書き込み - 週末プログラミング日記>http://blazingscarlet.blog47.fc2.com/blog-entry-45.html]]
-[[Pythonでの設定ファイルの書き込み その2 - 週末プログラミング日記>http://blazingscarlet.blog47.fc2.com/blog-entry-53.html]]
**タイマー処理について
-[[PyGTK上のタイマー処理について - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20090225/p1]]
-[[小さなデジタル時計を作ってみよう>http://www.geocities.co.jp/SiliconValley-Cupertino/4084/Cprogram/clock.html]]
*Scribes
-[[Scribesというエディタ - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20080107/1199710425]]
-[[Scribes - Simple And Powerful Text Editor for GNOME>http://scribes.sourceforge.net/index.html]]
Pythonで書かれたエディタみたいです。
実際に良いソースコードを読むことが勉強には一番だと思うので、
このソースコードをダウンロードしてみる。
dyna{cupnes}% sudo apt-get source scribes [~]
[sudo] password for cupnes:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
NOTICE: 'scribes' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/scribes/trunk/
1205kB のソースアーカイブを取得する必要があります。
取得:1 http://jp.archive.ubuntu.com jaunty/universe scribes 0.3.3.3-4 (dsc) [1602B]
取得:2 http://jp.archive.ubuntu.com jaunty/universe scribes 0.3.3.3-4 (tar) [1196kB]
取得:3 http://jp.archive.ubuntu.com jaunty/universe scribes 0.3.3.3-4 (diff) [6947B]
1205kB を 9s で取得しました (129kB/s)
sh: dpkg-source: not found
展開コマンド 'dpkg-source -x scribes_0.3.3.3-4.dsc' が失敗しました。
'dpkg-dev' パッケージがインストールされていることを確認してください。
E: 子プロセスが失敗しました
こんなエラーが
いわれた通り、'dpkg-dev'をインストールする。
$ sudo apt-get install dpkg-dev
再び実行してみる。
dyna{cupnes}% sudo apt-get source scribes [~]
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
NOTICE: 'scribes' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/scribes/trunk/
すでにダウンロードされたファイル 'scribes_0.3.3.3-4.dsc' をスキップします
すでにダウンロードされたファイル 'scribes_0.3.3.3.orig.tar.gz' をスキップします
すでにダウンロードされたファイル 'scribes_0.3.3.3-4.diff.gz' をスキップします
0B のソースアーカイブを取得する必要があります。
gpg: 警告: 構成ファイル「/home/cupnes/.gnupg/gpg.conf」の安全でない所有者
gpg: 2008年07月15日 04時25分46秒 JSTにDSA鍵ID ED75F599で施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません
dpkg-source: extracting scribes in scribes-0.3.3.3
dpkg-source: info: unpacking scribes_0.3.3.3.orig.tar.gz
dpkg-source: info: applying scribes_0.3.3.3-4.diff.gz
今度は公開鍵の問題か・・?
dyna{cupnes}% which scribes [~]
/usr/bin/scribes
$ file /usr/bin/scribes
/usr/bin/scribes: a python script text executable
そういえば、Pythonはスクリプトだから
これをそのまま見ればいいのか。
*行列でWidgetを配置するには
[[gtk.Table>http://library.gnome.org/devel/pygtk/stable/class-gtktable.html]]
*ninix
-[[ninix-aya開発プロジェクト>http://ninix-aya.sourceforge.jp/]]
参考になりそう
**gettext.install('ninix') って何?
-[[6.28.3.2 アプリケーションを地域化する>http://www.python.jp/doc/2.4/lib/node321.html]]
-[[ブログ: pythonとgettext>http://blogs.dion.ne.jp/futoshi/archives/6138864.html]]
**「常に手前に表示」について
[[ninix-aya-testing (ページ 4) : 何か。の略歴>http://www5f.biglobe.ne.jp/~nobml/sakura/xaya_t_4.html]]
ここによると
state = stayontop (常に手前に)
というように実装されている様子。
ninixのコードをかたっぱしから調べてみると、
sakura.py の1516行目あたりに次のような記述を発見
elif args[2] == 'stayontop':
self.surface.window_stayontop(True)
また、どうソースコード内の102行目に
self.surface = ninix.surface.Surface(self, self.prefs, debug)
という記述を発見。
surface.py を見てみると
def window_stayontop(self, flag):
for surface_window in self.window:
gtk_window = surface_window.window
gtk_window.set_keep_above(flag)
[[gtk.Window>http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--set-keep-above]]
gtk.Windowにset_keep_aboveというメソッドがあって、True/Falseで切り替えが可能な様子。
*Pythonのコードを読む
-[[2007-12-18 - tenkaoのはてなダ…メモ>http://d.hatena.ne.jp/tenkao/20071218]]
*その他色々と
emacsのpython-modeについて
-[[Guide - Software - Emacs - python-mode>http://tnt.math.metro-u.ac.jp/~tetsushi/nzmath/emacs-python-mode.html]]
-[[PyGTKでシステムトレイのアイコンの隣にポップアップウィンドウを作成する(後半) - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20090211/p1]]
**透過PNG素材
-[[digips - 無料ホームページ素材配布 PHPプログラミング研究サイト: カルガモ duck>http://digips.seesaa.net/article/36867451.html]]
[[pygtkで遊ぼう(14) 四角くないWindow編 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20080121/1200928127]]
PyGTKだと、一部が透過されたウィンドウというか、その名の通り『四角くないWindow』が簡単に表示できそうだったので、PyGTKを始めてみる。
*便利なもの
-[[Python ライブラリリファレンス>http://www.python.jp/doc/2.5/lib/contents.html]]
-[[PyGTK 2.0 Reference Manual>http://library.gnome.org/devel/pygtk/stable/]]
-[[Python Standard Library>http://epydoc.sourceforge.net/stdlib/]]
-[[GTK v1.2 チュートリアル(日本語版)>http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja.html]]
* インストール
上記のページのソースコードをそのままコピペでうまくいったのでとりあえずOK。
Gimpでlogo.pngという名前で透過なpng画像を作成した後、
logo.pngをコピペしたソースコード(windowtest.py)と同じディレクトリへ配置して、
$ python windowtest.py
を実行したら問題なくうまくいった。
一つ、気をつけなければならなかったことは、
#-*- coding: utf-8 -*-
をソースコードの最初に記述しておかないと、
たとえコメントであってもASCII文字以外がソースコード中に出現すると
以下のようなエラーを出してしまうので注意。
SyntaxError: Non-ASCII character '\xe3' in file windowtest.py on line 24, but
no encoding declared; see http://www.python.org/peps/pep-0263.html for details
*いじってみた
[[LinuxMania: PyGTK を使ってみよう その1(Pyhton入門)>http://www.linuxmania.jp/howto_pygtk.html]]
ここが何かと参考になりそう。
サンプルプログラムを実行する際に一つ注意点が
emacsで編集する際にファイル先頭で
# -*- coding:UTF-8 -*-
というように文字コードを指定して保存しようとすると
It is highly recommended to fix it before writing to a file.
Warning (mule): Invalid coding system `UTF-8' is specified
for the current buffer/file by the :coding tag.
と怒られる。
調べてみると、同じ症状が出ている人がいた
-[[mamamotoの日記>http://d.hatena.ne.jp/mamamoto/]]
ここによると
# -*- coding: utf-8 -*-
のように文字コード指定を小文字で行うと治るらしい。
おお、治った。
他にも
-[[PyGTK 2.0 Tutorial>http://www.pygtk.org/pygtk2tutorial/]]
-[[PyGTK 2.0 Reference Manual>http://library.gnome.org/devel/pygtk/stable/]]
が英語だけど参考になります。
Pythonでのクラスの実装については
-[[Python のクラスシステム>http://www.shido.info/py/python7.html]]
-[[python:クラス名の取得: __class__.__name__ - Windows Live>http://hdknr.spaces.live.com/Blog/cns!82BB74511E950AA4!1822.entry]]
-[[9. クラス>http://www.python.jp/doc/2.4/tut/node11.html]]
-[[Python プログラミング>http://hehe.s9.xrea.com/html/python.rst.html#c-python]]
が参考になります。
**gtk.EventBoxについて
透過PNGをWindowの装飾無しで表示できる所までは、サンプルプログラムの通り。
これを、『クリックした時に何か起こす』とかイベント処理と絡めるためには
img = gtk.Image()
img.set_from_file(imageName)
img.connect('button_release_event', self.say_hello)
ということができれば良いのだが、これだと実際に動かしてみてクリックしても何も起こらない
その理由は、「ImageウィジェットがXのイベントを受け取らないから」で、詳しくはこちらに記述してある。
-[[Chapter 13. Xと関連のないウィジット>http://book.geocities.jp/gtkmm_ja/docs/tutorial/html/chapter-widgets-without-xwindows.html]]
Pythonではないが、GTKの処理自体は同じなので参考になる。
そのために用いるのが「EventBoxウィジェット」で、次のように使う。
ebox = gtk.EventBox()
img = gtk.Image()
img.set_from_file(imageName)
self.add(ebox)
ebox.add(img)
ebox.connect('button_release_event', self.say_hello)
この様に先ほどのプログラムを変更する。
参考:
-[[gtk.Image>http://www.pygtk.org/docs/pygtk/class-gtkimage.html]]
-[[gtk.EventBox>http://www.pygtk.org/docs/pygtk/class-gtkeventbox.html#method-gtkeventbox--set-above-child]]
-[[Gtk::ScrolledWindow と Gtk::EventBox の順番>http://www.hakodate-ct.ac.jp/~tokai/tokai/gtkmm/app/p3.htm]]
-[[pygtkで遊ぼう(5) gtk.EventBox編 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20071022/1193149527]]
**Python で Linux コマンドを実行する
import commands
print commands.getoutput("date")
この2文で実現可能なようです
ただし、Pythonインタプリタ上だと date のようにLANG環境変数の設定によって日本語で出力するようなコマンドでは、文字化けする場合あり
-[[Python で Linux コマンドを実行する - Decchiの日記>http://d.hatena.ne.jp/Decchi/20091121/1258823982]]
**ハンドラ関数の引数はシグナルの種類によって異なる場合がある
-[[2008-05-24 - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20080524]]
-[[PyGTK + Gladeのアプリケーションにおけるハンドラ関数について(後半) - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20080525/p1]]
**print文について
-[[とりあえず: -Python-お勉強- Python入門(16) - printステートメント>http://atkonn.blogspot.com/2008/02/python-python16-print.html]]
**マウス関係のイベント処理
-[[〈 SL 〉: PyGTK を使ったカスタム・ウィジットの書き方>http://po3a.blogspot.com/2006/09/pygtk.html]]
-[[GTK/GDK/gladeによるプログラムメモ>http://kota.steeludon.com/gtk/line.html]]
**実行時のデフォルトの表示位置について
gtk.Window.set_position()
で設定できるみたいです。
ここで設定できる定数は
-gtk.WIN_POS_CENTER -- 画面の中央に表示
-gtk.WIN_POS_MOUSE -- 現在のマウスの位置に表示
-gtk.WIN_POS_CENTER_ALWAYS -- サイズが変更されたりしたときも、いつも中央に表示
-gtk.WIN_POS_CENTER_ON_PARENT -- 親ウインドウの中央に表示
の4つです
-[[pygtk覚え書き Windowを画面中央に表示 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20071204/1196765105]]
右下に表示したいという場合は、こちらが参考になるかも
-[[gtk.Window>http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--move]]
**D&Dの処理について
-[[PyGTKでファイルマネージャからファイルアイコンをドラッグ・アンド・ドロップを受け取る(URIリストの加工と環境による違いの吸収) - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20090305/p1]]
**設定ファイルの読み書きについて
-[[9.2 ConfigParser -- 設定ファイルの構文解析器>http://www.python.jp/doc/2.5/lib/module-ConfigParser.html]]
-[[Perl Tips | Python で、設定ファイルを読み込む方法 (ConfigParser)>http://perltips.twinkle.cc/python/configparser.php]]
-[[Pythonでの設定ファイルの書き込み - 週末プログラミング日記>http://blazingscarlet.blog47.fc2.com/blog-entry-45.html]]
-[[Pythonでの設定ファイルの書き込み その2 - 週末プログラミング日記>http://blazingscarlet.blog47.fc2.com/blog-entry-53.html]]
**タイマー処理について
-[[PyGTK上のタイマー処理について - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20090225/p1]]
-[[小さなデジタル時計を作ってみよう>http://www.geocities.co.jp/SiliconValley-Cupertino/4084/Cprogram/clock.html]]
*Scribes
-[[Scribesというエディタ - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20080107/1199710425]]
-[[Scribes - Simple And Powerful Text Editor for GNOME>http://scribes.sourceforge.net/index.html]]
Pythonで書かれたエディタみたいです。
実際に良いソースコードを読むことが勉強には一番だと思うので、
このソースコードをダウンロードしてみる。
dyna{cupnes}% sudo apt-get source scribes [~]
[sudo] password for cupnes:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
NOTICE: 'scribes' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/scribes/trunk/
1205kB のソースアーカイブを取得する必要があります。
取得:1 http://jp.archive.ubuntu.com jaunty/universe scribes 0.3.3.3-4 (dsc) [1602B]
取得:2 http://jp.archive.ubuntu.com jaunty/universe scribes 0.3.3.3-4 (tar) [1196kB]
取得:3 http://jp.archive.ubuntu.com jaunty/universe scribes 0.3.3.3-4 (diff) [6947B]
1205kB を 9s で取得しました (129kB/s)
sh: dpkg-source: not found
展開コマンド 'dpkg-source -x scribes_0.3.3.3-4.dsc' が失敗しました。
'dpkg-dev' パッケージがインストールされていることを確認してください。
E: 子プロセスが失敗しました
こんなエラーが
いわれた通り、'dpkg-dev'をインストールする。
$ sudo apt-get install dpkg-dev
再び実行してみる。
dyna{cupnes}% sudo apt-get source scribes [~]
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
NOTICE: 'scribes' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/scribes/trunk/
すでにダウンロードされたファイル 'scribes_0.3.3.3-4.dsc' をスキップします
すでにダウンロードされたファイル 'scribes_0.3.3.3.orig.tar.gz' をスキップします
すでにダウンロードされたファイル 'scribes_0.3.3.3-4.diff.gz' をスキップします
0B のソースアーカイブを取得する必要があります。
gpg: 警告: 構成ファイル「/home/cupnes/.gnupg/gpg.conf」の安全でない所有者
gpg: 2008年07月15日 04時25分46秒 JSTにDSA鍵ID ED75F599で施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません
dpkg-source: extracting scribes in scribes-0.3.3.3
dpkg-source: info: unpacking scribes_0.3.3.3.orig.tar.gz
dpkg-source: info: applying scribes_0.3.3.3-4.diff.gz
今度は公開鍵の問題か・・?
dyna{cupnes}% which scribes [~]
/usr/bin/scribes
$ file /usr/bin/scribes
/usr/bin/scribes: a python script text executable
そういえば、Pythonはスクリプトだから
これをそのまま見ればいいのか。
*行列でWidgetを配置するには
[[gtk.Table>http://library.gnome.org/devel/pygtk/stable/class-gtktable.html]]
*ninix
-[[ninix-aya開発プロジェクト>http://ninix-aya.sourceforge.jp/]]
参考になりそう
**gettext.install('ninix') って何?
-[[6.28.3.2 アプリケーションを地域化する>http://www.python.jp/doc/2.4/lib/node321.html]]
-[[ブログ: pythonとgettext>http://blogs.dion.ne.jp/futoshi/archives/6138864.html]]
**「常に手前に表示」について
[[ninix-aya-testing (ページ 4) : 何か。の略歴>http://www5f.biglobe.ne.jp/~nobml/sakura/xaya_t_4.html]]
ここによると
state = stayontop (常に手前に)
というように実装されている様子。
ninixのコードをかたっぱしから調べてみると、
sakura.py の1516行目あたりに次のような記述を発見
elif args[2] == 'stayontop':
self.surface.window_stayontop(True)
また、どうソースコード内の102行目に
self.surface = ninix.surface.Surface(self, self.prefs, debug)
という記述を発見。
surface.py を見てみると
def window_stayontop(self, flag):
for surface_window in self.window:
gtk_window = surface_window.window
gtk_window.set_keep_above(flag)
[[gtk.Window>http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--set-keep-above]]
gtk.Windowにset_keep_aboveというメソッドがあって、True/Falseで切り替えが可能な様子。
*Pythonのコードを読む
-[[2007-12-18 - tenkaoのはてなダ…メモ>http://d.hatena.ne.jp/tenkao/20071218]]
*その他色々と
emacsのpython-modeについて
-[[Guide - Software - Emacs - python-mode>http://tnt.math.metro-u.ac.jp/~tetsushi/nzmath/emacs-python-mode.html]]
-[[PyGTKでシステムトレイのアイコンの隣にポップアップウィンドウを作成する(後半) - 試験運用中なLinux備忘録>http://d.hatena.ne.jp/kakurasan/20090211/p1]]
**透過PNG素材
-[[digips - 無料ホームページ素材配布 PHPプログラミング研究サイト: カルガモ duck>http://digips.seesaa.net/article/36867451.html]]