代码之家  ›  专栏  ›  技术社区  ›  killown

python-gtk treeview-liststore实时更新

  •  1
  • killown  · 技术社区  · 14 年前

    我在尝试获取实时更新时遇到了一个问题,我创建了一个示例来模拟我想做的事情。

    http://img204.imageshack.us/i/capturadetela5.png/

    它应该更新treeview列“speed”,并每秒给它一个不同的数字,

    import gtk
    import gtk.glade
    import random
    
    builder = gtk.Builder()
    builder.add_from_file('ttt.glade')
    window = builder.get_object('window1')
    treeview  = builder.get_object('treeview1')
    store = builder.get_object('liststore1')
    column_n = ['File','Size','Speed']
    rendererText = gtk.CellRendererText()
    
    
    for i in range(10):
        foo = random.randint(100,256)
        list_ =  [('arquivo1.tar.gz', '10MB', '%s k/s' % foo)]
    
    for x,y in zip(column_n,range(3)):
    
        column = gtk.TreeViewColumn(x, rendererText, text=y)
        column.set_sort_column_id(0)    
        treeview.append_column(column)
    
    
    for list_index in list_:
        store.append([list_index[0],list_index[1],list_index[2]])
    
    window.show_all()
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   detly FBruynbroeck    14 年前

    如果这是完整的代码,那么就缺少GTK主循环调用。

    1-连接窗户 destroy 向调用 gtk.main_quit()

    def on_destroy(widget, user_data=None):
        # Exit the app
        gtk.main_quit()
    
    window.connect('destroy', on_destroy)
    

    2-启动GTK主回路:

    gtk.main()
    

    这是你的应用程序有效启动的地方,它会一直挂在这条线上直到 gtk.main\u quit() 被称为。

    "Hello World" demo PyGTK tutorial -它基本上涵盖了这些要点,而且更详细。你会发现,遵循他们的一般结构对事情有很大的帮助。

    如果您想要定时更新,请查看函数 timeout_add timeout_add_seconds glib gobject

    (顺便说一句,gtkbuilderxml文件通常具有 .ui