PyGTKã§ããªã¼ãã¥ã¼ã«ãªã¹ãã®ãã¼ã¿(ListStore)ã表示(æ¦è¦ã¨ã¡ã¢)
ããªã¼ãã¥ã¼ã«ã¤ãã¦
GTKã®ããªã¼ãã¥ã¼ã¨ããé¨åã¯ãªã¹ã(gtk.ListStoreオブジェクト)ã表示ããã®ã¯ãã¡ãããé層ãæã£ããã¼ã¿(gtk.TreeStoreオブジェクト)ã表示ãããã¨ãã§ãããã©ã¡ãã®ãã¼ã¿å½¢å¼ã§ãã£ã¦ãããã¼ã¿èªèº«ã¨ããªã¼ãã¥ã¼ã¨ã¯é¢é£ä»ãããã¦ã¯ãããã®ã®ãå¥ã
ã®ãªãã¸ã§ã¯ãã¨ãã¦æ±ããã¨ã«ãªããããã¯ãè¤æ°è¡ã®æååã表示ããé¨åã§ããããã¹ããã¥ã¼(gtk.TextView)ã¨ãã®ãã¼ã¿ã§ããããã¹ããããã¡(gtk.TextBuffer)ã®é¢ä¿ã¨ä¼¼ã¦ããã
åã»ã«ã«ã¯æå以å¤ã«ãç»å(gtk.gdk.Pixbuf)ã表示ããããã§ãã¯ããã¯ã¹ãã©ã¸ãªãã¿ã³ã表示ããããã§ããã
ããªã¼ãã¥ã¼ã¯é«åº¦ãªãã¨ãã§ããåé¢ã¨ã£ã¤ãã«ãããã¾ããæ±ãæ¹ãè²ã
ã¨å¹
åºããããã§å
¨ã¦ãæ¸ããã¨ã¯ã§ããªãã
ããªã¼ãã¥ã¼ã«ã¯ä½ãå¿ è¦ã
- åã³ã©ã ã®çªå·(ãã¼ã¿ã®ã©ã®é ç®ããã®ã³ã©ã ã¨é¢é£ä»ããã®ããæå®*1ããã®ã«ä½¿ç¨)ã»çµã¿è¾¼ã¿é¢æ°range()ã§é£çªçæãããã¨ãå¤ã
- åã»ã«ãæç»ããã»ã«ã¬ã³ãã©(gtk.CellRendererã®ã¯ã©ã¹ãç¶æ¿ããã種é¡(ããã¹ããç»åãªã©)ãã¨ã®ãªãã¸ã§ã¯ãã¨ãã®è¨å®(å ´åã«ãã£ã¦ã¯ãã®ã·ã°ãã«ãè¨å®)
- 表示ããåã³ã©ã (gtk.TreeViewColumn)ã®ãªãã¸ã§ã¯ã
- ãã¼ã¿(gtk.ListStoreãããã¯gtk.TreeStore)ã»ãããã¯gtk.TreeModelãç¶æ¿ãã¦ãã¦ãã¢ãã«ãã¨ãå¼ã°ãã
è²ã ãªã¯ã©ã¹ãç»å ´ãé¢é£ãæã£ã¦ãããããããããã¡ãã¨ç解ããå¿ è¦ããããæ £ããã¾ã§ã¯ããã©ãã
ã¡ã¢
- ããªã¼ãã¥ã¼ã¨ãã¼ã¿ã®é¢é£ä»ãã¯ããã¼ã¿ã®gtk.ListStore/gtk.TreeStoreã®ãªãã¸ã§ã¯ããäºåã«ä½æãã¦ããgtk.TreeViewãªãã¸ã§ã¯ãã®ã¡ã³ãé¢æ°set_model()ã§è¡ããã¨ã«ãã£ã¦ã§ããããããªã¼ãã¥ã¼ã®ä½ææã«ãã¼ã¿(gtk.ListStoreãgtk.TreeStore)ã®ãªãã¸ã§ã¯ãããtreeview = gtk.TreeView(model=gtk.ListStore([gtk.ListStoreã®ã³ã³ã¹ãã©ã¯ã¿å¼æ°]))ãã®ããã«ãã¦åæã«ä½æãããããé¢é£ä»ãããã¨ãã§ãã
- gtk.ListStoreã¯åºå®è¦ç´ æ°ãªã¿ãã«åããªã¹ãã«ãããããªãã¼ã¿*2ãæã¤ããåæåæã«(ã¿ãã«ã®ãããª1ã¤ã®ã¾ã¨ã¾ãã®ä¸ã«ããã)åé ç®ã®åã決ããå¿ è¦ãããããã®åã«åã£ããã¼ã¿ã®ã¿åãä»ãã
- ãgtk.ListStore(int, str, str)ãã¨ãã¦åæåããListStoreã¯ãæ´æ°/æåå/æååãã®æ§é ãæã¤ã»ããã¯Pythonã®åã使ç¨ãã¦ããããリファレンスã®ããã«GObjectã§å®ç¾©ãããåã使ç¨ãããã¨ãã§ããã»ã¾ããチュートリアルãåç §
- gtk.TreeViewColumnオブジェクトのコンストラクタã§ã¯ãæåã«ããªã¼ãã¥ã¼ã®ä¸çªä¸ã«è¡¨ç¤ºããã説ææååã次ã«ã»ã«ã¬ã³ãã©ãªãã¸ã§ã¯ããæå®ãããããã®å¾ãã«ã¯ãtext=[ã³ã©ã çªå·]ããªã©ã®è¿½å ã®å¼æ°ã渡ãå¿ è¦ããããå·¦å´ã®ãtext=ãã®é¨åã¯gtk.CellRendererTextオブジェクトã®ã¡ã³ãå¤æ°ã¨å¯¾å¿ãããã®ã¨ãªã£ã¦ãã¦ãã»ã«ã¬ã³ãã©ã®æç»ã«é¢ããè¨å®*3ã¨ãªãã»ã=ãã®å³å´ã¯ã³ã©ã çªå·ã§ãäºåã«é£çªã¨ãã¦ä½æãã¦ãããã³ã©ã çªå·ã¨åãããã»ããã¹ãã表示ããgtk.CellRendererTextã§ã¯ãtext=ãã§è¡¨ç¤ºæååã®ã³ã©ã çªå·ã¨å¯¾å¿ä»ãã
- ã»ã«ã¬ã³ãã©ã«ã¯è²ã 種é¡ãããããå ¨ã¦gtk.CellRendererオブジェクトãç¶æ¿ãã¦ãã
- TreeViewã®ãªãã¸ã§ã¯ãããã¯é¢é£ä»ããããListStore(ãããã¯TreeStore)ãã¡ã³ãé¢æ°get_model()ããåãåºãã¦ãListStoreã®å ´åã¯ãã®ã¡ã³ãé¢æ°append()ã«ã¿ãã«ã®å½¢ã§ãã¼ã¿ã1ã¤ãã¤è¿½å ãã¦ããå½¢ã«ãªã
- ãã¼ã¿ã追å ãããã¨ããªã¼ãã¥ã¼ä¸ã«å¤æ´ãåæ ããã
- gtk.ListStoreã¯ã©ã¹ã¯gtk.TreeModelã¯ã©ã¹ãç¶æ¿ãã¦ããããããã®ãã¼ã¸ã®ã¡ã³ãé¢æ°ãªã©ã使ç¨ã§ãã
- ããªã¼ãã¥ã¼ã«ã¯1è¡ããã«ã·ãã·ããä»ããã®ã¨ä»ããªããã®ã¨ãããããããã¯gtk.TreeViewオブジェクトã®ã¡ã³ãé¢æ°set_rules_hint()ã§Trueãæå®ããã¨ä»ãã»ãã ããGTK+ 2ã®ãã¼ãã«ãã£ã¦ã¯Trueã§ãã·ãã·ããåºãªãå ´åããã
é¢é£è¨äº:
- PyGTKでツリービューにリストのデータ(ListStore)を表示(簡単な例)
- PyGTKでツリービューにリストのデータ(ListStore)を表示(データを変更可能にする・メモ)
- PyGTKでツリービューにリストのデータ(ListStore)を表示(データを変更可能にする・コード例)
- PyGTKでツリービューに階層を持ったデータ(TreeStore)を表示
- PyGTKでツリービューにリストのデータ(ListStore)を表示(項目をGUI上で追加/削除、データの並べ替えや入れ替えなど)
- PyGTKでツリービューにリストのデータ(ListStore)を表示(モデルの内容を取り出す)
- PyGTKでツリービューにリストのデータ(ListStore)を表示(ボタンからデータの順番を入れ替える・メモ)
- PyGTKでツリービューにリストのデータ(ListStore)を表示(ボタンからデータの順番を入れ替える・コード例)
- PyGTKでツリービューの各テキストセルに対してスタイルを適用する(前半)
- PyGTKでツリービューの各テキストセルに対してスタイルを適用する(後半)
- C言語でGTK+ 2を扱う上での幾つかのメモ(第8回)
åèURL:
- PyGTK リファレンス: gtk.TreeView
- PyGTK リファレンス: gtk.TreeViewColumn
- PyGTK リファレンス: gtk.CellRendererText
- PyGTK リファレンス: gtk.CellRenderer
- PyGTK リファレンス: gtk.ListStore
- PyGTK リファレンス: gtk.TreeStore
- PyGTK リファレンス: gtk.TreeModel
- PyGTK リファレンス: gtk.TextView
- PyGTK リファレンス: gtk.TextBuffer
- PyGTK リファレンス: gtk.gdk.Pixbuf
- PyGTK チュートリアル: 14. Tree View Widget
*1:ã¤ã¾ãããã¼ã¿å´ã«ã¯ããªã¼ãã¥ã¼ã«è¡¨ç¤ºãããªãé ç®ãä½ããã¨ãããã¨ã§ããã
*2:å ·ä½çãªå½¢ã«ããã¨ã[(1, "abc", True), (2, "def", False), (3, "ghi", False)]ããªã©ã®ãããªã¤ã¡ã¼ã¸
*3:ç´°ããªæ¸å¼ãListStore/TreeStoreå´ã®åå¥ã®é ç®ã«æããããã¨ã«ãªã