最も原始的な計算機の例を使用して、pygtkでのインターフェースの作成を調べてみましょう。 多くの写真、少しのコード。
gtkbuilderは、xmlで最も高度なgtkインターフェース記述形式です。
以前にlibgladeを使用したことがある場合、libglade-convertコマンドを使用して.gladeファイルを新しい形式に変換できます。
これはすべてWindowsで機能します。pygtkと必要なすべてのライブラリをインストールする必要があります。 将来、py2exeですべてをパックできるようになります。
glade-3を実行する

ウィンドウを作成し、テーブルを配置します

左上のセルにエントリを挿入し、パッキングで右に設定します
attachment-4で4列に拡大します
一般に、編集可能に設定します:いいえ

シグナルのwindow1の場合、key-press-eventに「key_press」と入力します。
in destroy-“ quit”(ウィンドウを閉じるときにプログラムを終了するように)
key_press and quitは、コード内のメソッドの名前です
この場合、ボタンを押してウィンドウを閉じることにより、特定のアクションが実行されたときに呼び出されます。

ボタンを追加

残りはコードで生成します。
「=」およびリセットを除くすべてのボタンについて、信号を設定する/「put_text」をクリックした
「=」の場合は「計算」、リセットの場合は「リセット」

クリックされるようにボタンの共通/アクセラレータを設定します
押すたびに キー、「=」の場合は「=」になり、「Return」はリセットされません
何も公開しません(エスケープが必要で、コードで実行します)

demo.uiファイルに保存
コードを書く

質問がある場合は、「devhelp」を実行してドキュメントを読んでください

EntryDescriptorに注意してください-これは
Python記述子であり 、
gtk.Entryの値をより便利に使用できます
残りはコメントから明確にする必要があります。
注:計算機は整数と整数除算で動作しますが、
つまり 5/2 = 2 :)この記事では、インターフェースの作成について説明しました。
気を散らさないように、できるだけシンプルに。
#!/ usr / bin / env python
#コーディング:utf-8
#vim:ai ts = 4 sts = 4 et sw = 4
インポートgtk
輸入OS
クラスEntryDescriptor(オブジェクト):
def __init __(self、object_name):
self.object_name = object_name
def __get __(self、obj、cls):
return obj.get_object(self.object_name).get_text()
def __set __(self、obj、value):
obj.get_object(self.object_name).set_text(値)
クラス電卓(gtk.Builder):
def __init __(self):
super(電卓、自己).__ init __()
#demo.uiをロード
self.add_from_file(os.path.join(os.path.dirname(__ file __)、 'demo.ui'))
#demo.uiに記述されているシグナルハンドラをselfオブジェクトに接続します
self.connect_signals(自己)
#ホットキーのグループを作成し、数字付きのキー用にウィンドウに接続します
agroup = gtk.AccelGroup()
self.window1.add_accel_group(agroup)
#ボタンを作成し、ホットキーを掛けてtable1に配置します
xrange(10)のiの場合:
btn = gtk.Button(str(i))
btn.connect(「クリック」、self.put_text)
btn.add_accelerator(「クリック」、agroup、ord(str(i))、0、0)
y、x = i / 3、i%3
self.table1.attach(btn、x、x + 1、y + 1、y + 2)
#ウィンドウとその上のすべてのウィジェットを表示する
self.window1.show_all()
def __getattr __(self、attr):
#self.get_object( 'window1')よりself.window1を書く方が便利
obj = self.get_object(attr)
objでない場合:
AttributeErrorを発生させます( 'object%r has no attribute%r'%(self、attr))
setattr(self、attr、obj)
objを返す
#Python記述子。これにより、gtk.Entryの値をより便利に処理できます。
expr = EntryDescriptor( 'entry1')
def計算(自己、ウィジェット=なし):
self.exprでない場合:戻ります
試してください:
self.expr = str(eval(self.expr))
例外を除く、e:
#ゼロなどに閉じることができます
印刷する
defリセット(自己、ウィジェット):
self.expr = ''
def quit(self、widget):
gtk.main_quit()
def put_text(自己、ウィジェット):
テキスト= widget.get_label()
expr = self.expr
expr [-1:]ではない場合、text.isdigit()ではなくisdigit():
#8 / * 2などを書くことができないように
帰る
self.expr + =テキスト
def key_press(自己、ウィジェット、イベント):
#コードからボタンの名前を取得
キー= gtk.gdk.keyval_name(event.keyval)
キー== 'BackSpace'の場合:
self.exprの場合:
self.expr = self.expr [:-1]
elifキー== 'エスケープ':
self.reset(なし)
__name__ == '__main__'の場合:
計算機=計算機()
gtk.main()
demo.pydemo.uipython demo.pyを開始します。

トピックが興味深い場合は、次の記事
でpygtkおよびpywebkitgtkに基づいた
ブラウザーの作成について説明すると思います。 インタラクティブコンソール(ipython); pythonとjavascriptの統合。