免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2538 | 回复: 4
打印 上一主题 下一主题

【pygtk】部分组件不能显示 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-10 01:44 |只看该作者 |倒序浏览
我的treeview不能显示,不知道是否与类的设计与继承有关系···代码如下:
Gui类:
  1. import gtk
  2. import pygtk
  3. class Ui(object):
  4.     def __init__(self,glade_file = None):
  5.         self.init(glade_file)

  6.     #--初始化所需的gtk材料
  7.     def init(self,glade_file):
  8.         gtk.rc_parse_string('''style "default-font"\n{\nfont_name = "simsun 9"\n}\nwidget_class "*" style "default-font"\ngtk-font-name = "simsun 9"''')
  9.         self.builder = gtk.Builder()
  10.         self.ui_file = glade_file or 'itemSearcher.glade'
  11.         try:
  12.             self.gui = self.builder.add_from_file(self.ui_file)
  13.         except Exception,e:
  14.             print "Error:%s"%e

  15.     def _get_widget(self,widget_name):
  16.         return self.builder.get_object(widget_name)
复制代码
pageUI类:
  1. from Gui import Ui
  2. import gtk
  3. class pageUi(Ui):
  4.     def __init__(self,entry_name,button_name,other):
  5.         #self.base_class = gui.Gui()
  6.         super(pageUi,self).__init__()
  7.         if not (entry_name and button_name and other):
  8.             raise TypeError,"miss argument or argument is None"
  9.         self.entry = self._get_widget(entry_name)
  10.         self.button = self._get_widget(button_name)
  11.         self.other_widget = self._get_widget(other)
  12.         self.other_widget.show_all()



  13.     def build_model(self,titles):
  14.         if not isinstance(titles,list):
  15.             raise "[titles] must be a list"
  16.         size = len(titles)
  17.         opt = [str for i in range(size)]
  18.         self.list_store = gtk.ListStore(*opt)
  19.         self._set_model(self.list_store)
  20.         self.make_header(titles)
  21.         return True

  22.     def _set_model(self,list_store):
  23.         self.other_widget.set_model(list_store)
  24.         return True

  25.     def make_header(self,titles,tv = None):
  26.         widget = tv or self.other_widget
  27.         cols = widget.get_columns()
  28.         print "tv is %s,widget is %s"%(tv,widget)
  29. ##        if not cols == None:
  30. ##            for col in cols:
  31. ##                widget.remove_column(col)
  32.         index = 0
  33.         for head in titles:  #####
  34.             column = gtk.TreeViewColumn(head, gtk.CellRendererText(), text=index)
  35.             column.set_sort_column_id(index)
  36.             widget.append_column(column)
  37.             index+=1
  38.         return False

  39. class itemPage(pageUi):
  40.     def __init__(self,widget_names = None):
  41.         widget_names = widget_names or ['cb_entry','bt_search','treeview']
  42.         #--call parent init
  43.         super(itemPage,self).__init__(*widget_names)
  44.         #--auto entry
  45.         self.entry_completion = gtk.EntryCompletion()
  46.         self.LS_entry = self._get_widget('LS_entry')
  47.         self.entry_completion.set_model(self.LS_entry)
  48.         self.entry_completion.set_text_column(0)
  49.         self.entry_completion.set_inline_completion(1)
  50.         #--combox
  51.         self.combox = self._get_widget('cb_item_type')
  52.         cell = gtk.CellRendererText()
  53.         self.combox.pack_start(cell, True)
  54.         self.combox.add_attribute(cell, 'text', 0)
  55.         #--history
  56.         self._build_history()
  57.         #--redefine entry
  58.         self.entry = self.entry.child

  59.     def _build_history(self):
  60.         self._get_widget('hpaned').set_position(470)
  61.         self.TV_history = self._get_widget('TV_history')
  62.         self.LS_history = gtk.ListStore(str,str)
  63.         self.TV_history.set_model(self.LS_history)
  64.         self.make_header([u'名称','ID'],self.TV_history )
  65.         print "TV:history:",self.TV_history



  66. class duanzaoPage(pageUi):
  67.     def __init__(self,widget_names = None):
  68.         widget_names = widget_names or ['en_duanzao','btn_duanzao_gen','TA_duanzao']
  69.         super(duanzaoPage,self).__init__(*widget_names)
  70.         self.btn_copy = self._get_widget('btn_duanzao_copy')
  71.         self.TB_duanzao = self._get_widget('TB_duanzao')
复制代码
运行效果图:

---------------------
正确效果图:


论坛徽章:
0
2 [报告]
发表于 2012-01-11 19:55 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2012-01-14 20:45 |只看该作者
继续顶

论坛徽章:
0
4 [报告]
发表于 2012-01-15 01:49 |只看该作者
还没用试过python写界面

论坛徽章:
0
5 [报告]
发表于 2012-01-30 21:12 |只看该作者
继续顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP