pyGTK 列表刷新model
2017-06-22 11:49
169 查看
为了更友好的视觉体验,使用pygtk写了个列表刷新的GUI工具。列表刷新的比较常用的工具,性能监控、实时数据查看等都会用到。下面简单介绍使用方法:
需要传入的参数有:
title:标题
col:列名(list)
func_getdata:刷新数据的方法名(返回 list数据)
time:刷新间隔
length,height:长和高(int)
运行:
先定义列名与获取数据的方法get_data,然后实例化:
RefreshListview(‘test’,col, get_data, 3,350,250).main()
demo code:
在windows上通过修改.py后缀为.pyw后缀,就可以双击运行(只显示UI不显示cmd)。
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:GBK import gtk import gobject class 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 random def 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)。
相关文章推荐
- 上拉刷新列表(自定义列表项布局)的实现
- 列表下拉/上拉刷新: (一)EGORefreshTableHeaderView使用、定义EGORefreshTableFooterView
- Three20研究院之TabBar与下拉列表访问数据与刷新(五)
- Three20之TabBar与下拉列表访问数据与刷新
- 实现app上对csdn的文章列表上拉刷新下拉加载以及加入缓存文章列表的功能 (制作csdn app 四)
- 自定义上拉加载更多的ListView配合SwipeRefreshLayout实现列表刷新加载
- odoo10 引入模块刷新列表不显示
- 一步步打造漂亮的新闻列表(无刷新分页、内容预览)(1)
- 使用BaseAdapter刷新列表出现下标越界异常
- Axure通过动态面板实现列表下拉自动刷新
- dwr刷新显示页面的下拉列表,并设置默认被选中项
- jquery datatable 列表刷新
- Javascript+ASP实现无刷新新闻列表
- Material Design最佳体验(2): 使用RecyclerView、CardView、SwipeRefreshLayout实现下拉刷新列表
- 时间: 2014年4月1日20:54:11完善Model完成商品列表功能
- Three20研究院之TabBar与下拉列表访问数据与刷新(五)
- 列表下拉/上拉刷新: (一)EGORefreshTableHeaderView使用、定义EGORefreshTableFooterView
- 实现app上对csdn的文章列表上拉刷新下拉加载以及加入缓存文章列表的功能 (制作csdn app 四)
- Inside the C++ Model第二讲之 成员初始化列表(Member Initialization List)
- 列表刷新+SBJSON+HTTP