2010-06-23 3 views
1

treeview liststore에 실시간 업데이트를 얻으려고하는데 문제가 있습니다. 내가하고 싶은 것을 시뮬레이션 할 예제를 만들었습니다. liststore1에서 각 루프를 업데이트하려고합니다.python-gtk treeview - 실시간 업데이트가 포함 된 liststool

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

는 트 리뷰 열 '속도'를 업데이트하고 다른 번호를 여기에 다운로드 관리자 등의 모든 초, 무언가를 제공해야합니다.

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() 

답변

2

전체 코드 인 경우 GTK 기본 루프 호출이 누락되었습니다.

당신은이 (이 순서대로) 일

일을 할 필요가 - gtk.main_quit()

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

window.connect('destroy', on_destroy) 

(2)를 호출하는 함수로 윈도우의 destroy 신호를 연결합니다 - GTK의 메인 루프 시작

gtk.main() 

이것은 앱이 효과적으로 시작되는 곳이며 gtk.main_quit()이 호출 될 때까지이 행에 멈춰있는 것으로 보입니다.

더 일반적으로 ... 조금 더 코드를 정리해야합니다. PyGTK tutorial에서 "Hello World" demo을 봅니다. 기본적으로 그 점들과 더 자세히 설명합니다. 사물에 대한 일반적인 구조를 따라 가면 대단히 도움이된다는 것을 알 수 있습니다.

당신은 시간 제한 업데이트를하려면

는 기능 timeout_addtimeout_add_seconds보고 - 이들은 glib 또는 gobject 모듈에있을 것입니다 PyGTK/PyGobject의 버전에 따라.

은 (덧붙여, GTKBuilder XML 파일은 일반적으로 습지가 알고하지 않는 경우에도 .ui 확장 있습니다.)

+0

내가 한 행복 캠프이었다 프로그래밍 PyGTK에 timeout_add 기능 우연히합니다. –

+0

'False'를 돌려 주면 멈추게됩니다. (전혀 돌아 가지 않으면'None'을 의미하기 때문에 작동하지 않아도됩니다.) 'idle_add' 함수는 또한 매우 유용합니다 :) – detly

관련 문제