pyGTK 列表刷新model

来源:互联网 发布:网络大电影市千万票房 编辑:程序博客网 时间:2024/05/21 09:03

为了更友好的视觉体验,使用pygtk写了个列表刷新的GUI工具。列表刷新的比较常用的工具,性能监控、实时数据查看等都会用到。下面简单介绍使用方法:

    def __init__(self,title,col,func_getdata,time=30,length=350,height=250):

需要传入的参数有:
title:标题
col:列名(list)
func_getdata:刷新数据的方法名(返回 list数据)
time:刷新间隔
length,height:长和高(int)

运行:
先定义列名与获取数据的方法get_data,然后实例化:
RefreshListview(‘test’,col, get_data, 3,350,250).main()

demo code:

# coding:GBKimport gtkimport gobjectclass RefreshListview(gtk.Window):    def __init__(self, title, col, func_getdata, time=30, length=350, height=250):        super(RefreshListview, self).__init__()        self.set_size_request(length, height)        self.set_position(gtk.WIN_POS_CENTER)        self.connect("destroy", gtk.main_quit)        self.set_title(title)        self.col = col        self.func_getdata = func_getdata        vbox = gtk.VBox(False, 8)        sw = gtk.ScrolledWindow()        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)        vbox.pack_start(sw, True, True, 0)        args = []        for i in range(len(col)):            args.append(str)        self.store = gtk.ListStore(*args)        result = self.func_getdata()        for res in result:            self.store.append(res)        treeView = gtk.TreeView(self.store)        sw.add(treeView)        self.create_columns(treeView)        self.add(vbox)        gobject.timeout_add(time * 1000, self.refresh_view)        self.show_all()    def create_columns(self, treeView):        for i in range(len(self.col)):            rendererText = gtk.CellRendererText()            column = gtk.TreeViewColumn(self.col[i], rendererText, text=i)            column.set_sort_column_id(i)            treeView.append_column(column)    def refresh_view(self):        print 'refreshing...'        self.store.clear()        result = self.func_getdata()        for res in result:            self.store.append(res)        return True    def main(self):        gtk.main()#获取数据方法import randomdef get_data():    result = []    try:        for i in range(0, 10):            result.append((random.randint(1, 100),                           random.randint(1, 100),                           random.randint(1, 100),                           random.randint(1, 100),                           ))    except Exception, e:        print e        result.append((-1, -1, -1, -1, -1))    return result#定义列名col = [u'日期', u'时间', u'价值', u'空间']#实例化RefreshListview('test', col, get_data, 3).main()

在windows上通过修改.py后缀为.pyw后缀,就可以双击运行(只显示UI不显示cmd)。

原创粉丝点击