python-gtk treeview-liststore和实时更新
我对treeview liststore试图获得实时更新有一个问题,我创建了一个示例来模拟我想要做的事情。 我希望liststore1更新每个循环 它应该更新treeview列的“速度”,并每秒给它一个不同的数字, 类似于下载管理器的东西python-gtk treeview-liststore和实时更新,python,pygtk,Python,Pygtk,我对treeview liststore试图获得实时更新有一个问题,我创建了一个示例来模拟我想要做的事情。 我希望liststore1更新每个循环 它应该更新treeview列的“速度”,并每秒给它一个不同的数字, 类似于下载管理器的东西 import gtk import gtk.glade import random builder = gtk.Builder() builder.add_from_file('ttt.glade') window = builder.get_object
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()
如果这是您的完整代码,那么您将丢失GTK主循环调用 你需要做两件事(按此顺序) 1-将窗口的
destroy
信号连接到调用gtk.main\u quit()的函数
2-启动GTK主回路:
gtk.main()
这是您的应用程序有效启动的地方,在调用gtk.main_quit()
更一般地说。。。您应该稍微整理一下代码:)从中查看-它基本上涵盖了这些要点,并且更详细。你会发现,遵循他们的一般结构对事情有很大帮助
如果您想要定时更新,请查看函数和-根据您的PyGTK/PyGobject版本,这些函数将位于glib
或gobject
模块中
(顺便说一句,GTKBuilder XML文件通常具有.ui
扩展名,即使Glade不知道它。)当我在编程PyGTK时偶然发现timeout_add函数时,我非常高兴。别忘了返回False
使其停止(虽然根本不返回应该可以工作,因为这意味着None
)。idle\u add
函数也非常有用:)
gtk.main()