「pygtkを始めてみた」の編集履歴(バックアップ)一覧はこちら

pygtkを始めてみた - (2009/12/11 (金) 23:41:49) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

[[pygtkで遊ぼう(14) 四角くないWindow編 - LinuxとかBlenderとかVol2>http://d.hatena.ne.jp/jkani4/20080121/1200928127]] PyGTKだと、一部が透過されたウィンドウというか、その名の通り『四角くないWindow』が簡単に表示できそうだったので、PyGTKを始めてみる。 * インストール 上記のページのソースコードをそのままコピペでうまくいったのでとりあえず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]] が参考になります。 **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]] *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はスクリプトだから これをそのまま見ればいいのか。 *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]] **透過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を始めてみる。 * インストール 上記のページのソースコードをそのままコピペでうまくいったのでとりあえず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]] *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はスクリプトだから これをそのまま見ればいいのか。 *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]] **透過PNG素材 -[[digips - 無料ホームページ素材配布 PHPプログラミング研究サイト: カルガモ duck>http://digips.seesaa.net/article/36867451.html]]

表示オプション

横に並べて表示:
変化行の前後のみ表示: