pygtkで遊ぼう(1) gtk.Window編
さてさて、今日から不定期でpython + pygtkをつかったプログラムを書いていこうと思います。
なにぶんにも我流なので、ツッコミどころ満載だとは思いますが、気がついたことがあれば
どんどんツッコミを入れてやってください(笑い。
尚、pygtkのドキュメントはダウンロード可能ですので、お手元においておくとよいでしょう。
英語ですが、とても重宝しますよ。
ダウンロードは ここ から入手できます。
また、チュートリアルは ここ から入手できます。
さて、最初は退屈な内容かもしれませんが、ご容赦ください。
今回はウインドウを作ってみます。
まずソースコードは以下の通りです。
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import pygtk if sys.platform != 'win32': pygtk.require('2.0') import gtk # # class simpleWindow: ## def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_border_width(2) self.window.set_size_request(400, 300) self.window.connect('delete_event', self.on_quit) self.window.show_all() gtk.main() ## def on_quit(self, widget, event=None, data=None): print '-- quit --' gtk.main_quit() return False # # def main(): wind = simpleWindow() # # if __name__ == '__main__': main()
上記のスクリプトを実行すると、こんな感じになります。
さて、それではソースの頭のほうから説明していこうと思います。
必要なモジュールのインポート
import sys import pygtk if sys.platform != 'win32': pygtk.require('2.0') import gtk
上記の部分では、gtkとpygtkを使用するために必要なモジュールをインポートしています。
決まり文句のようなものなので、特にこれといってないのですが、
pygtk.require('2.0')
の部分、これはWindows環境では不要らしいので、このようにしてあります。
ウインドウクラス
class simpleWindowの部分はウインドウを表示するためのクラスです。
今回のような単純な例では特にクラスにする必要はないのですが、今後、今回のウインドウをベースに
ソースを拡張していこうと思っていますので、クラスにしておきました。
def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_border_width(2) self.window.set_size_request(400, 300) self.window.connect('delete_event', self.on_quit) self.window.show_all() gtk.main()
上記はウィンドウクラスの初期化関数(コンストラクタ)になります。
この関数では
GTKのウインドウを生成してサイズを幅400pix,高さ300pixに設定。
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_border_width(2)
self.window.set_size_request(400, 300)
イベントハンドラを設定
self.window.connect('delete_event', self.on_quit)
ここでは、ウインドウが閉じられた際に実行すべき関数としてsimpleWindowクラスのメソッドであるon_quitを設定しています。
ウインドウの表示
self.window.show_all()
対象のウインドウを表示させるだけであれば、self.window.show()でもよいのですが、ウインドウ上にあるウィジェットも含めて全てを一括で表示するようにしたいのでshow_all()を呼び出しています。