っても、ネタってほどのモノじゃないんですが、実はこれが。(笑)
激、シンプル。
追加したコードは以下の内容になりますかね。
def on_btAdd_clicked(self,widget): tbEdit = self.wTree.get_object("tbEdit") self.listStore.append([len(self.listStore)+1,tbEdit.get_text()])前回はpassで済ませてた、追加ボタンを押された場合の処理を追記しただけです。
GTKのTreeViewのこのListStoreというオブジェクトを使う場合、Pythonでは、アイテムの追加には、appendというメソッドを使い、渡すのは、その行の列の形式にマッチしたタプル(またはリスト)を渡します。
今回はリストで渡してますけど。
簡単にプログラムを説明してしまうと、最初に、入力文字列を取得するために、GTKBuilderから、テキストボックスのオブジェクトを取得し、次に、現在のListStoreのアイテム数(行数)をlen()関数で取得して、その値に1を加えたものを行番号とし、それにテキストボックスに入力された文字列を取得して、リストを作成し、appendの引数に与えてるだけです。
これ、結構考えられるなー、と思ったのが、タプルで渡すとこ、ですかね。
つまり、forで受け取ったタプルを、そのままappend出来るわけです。
どんな時に便利か、というと、データベースからデータ取得してきた際に、タプルで戻されるようにしておけば、forを使って、TreeViewに簡単に表を作れてしまう、ってところでしょうか。
この辺、SQLiteと組み合わせたサンプルというか、課題っぽいものを考えてますので、またいずれ。(笑)
まあ、焦っても、気になるあの子のブラチラは拝めません。
やはり、夏になって、薄着になり、かつ胸元が大きく開いた服を着た日を狙わないと、なかなか拝めないものです。
つまり、下準備が重要ということですな。(何の
今年の夏は冷房も制限されるようで、なおさら、薄着で胸元の大きく開いた服が期待できます。
ある意味、震災もラッキーだったかも、と前向きに考えて、気になるあの子の胸の谷間やブラチラをゲットしましょう。(笑)
ま、与太はともかく。
一応、ソースコード全文を掲載しときます。
Gladeファイルは前回のモノと変わってないので、そのまま使ってください。
import sys import os.path try: import pygtk pygtk.require("2.0") except: pass try: import gtk except: sys.exit(1) __author__ = 'kaoru' class sample2: def __init__(self): gladefile = 'sample2.glade' self.wTree = gtk.Builder() self.wTree.add_from_file(os.path.dirname(os.path.abspath(__file__)) + "/"+gladefile) self.wTree.connect_signals(self) self.treeView = self.wTree.get_object("treeview1") self.listStore = self.wTree.get_object("liststore1") self.MainWindow = self.wTree.get_object("MainWindow") self.MainWindow.show_all() def on_MainWindow_destroy(self,widget): gtk.main_quit() def on_btAdd_clicked(self,widget): tbEdit = self.wTree.get_object("tbEdit") self.listStore.append([len(self.listStore)+1,tbEdit.get_text()]) def on_btOK_clicked(self,widget): gtk.main_quit() def on_btClose_clicked(self,widget): gtk.main_quit() if __name__ == "__main__": sample2() gtk.main()