【pygtk】部分组件不能显示

软件和网站开发以及相关技术探讨
回复
wfnh
帖子: 84
注册时间: 2008-02-20 11:46
联系:

【pygtk】部分组件不能显示

#1

帖子 wfnh » 2012-01-10 13:33

我的treeview不能显示,不知道是否与类的设计与继承有关系···代码如下:
Gui类:

代码: 全选

import gtk
import pygtk
class Ui(object):
    def __init__(self,glade_file = None):
        self.init(glade_file)

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

    def _get_widget(self,widget_name):
        return self.builder.get_object(widget_name)
--------------------------
pageUI类:

代码: 全选

from Gui import Ui
import gtk
class pageUi(Ui):
    def __init__(self,entry_name,button_name,other):
        #self.base_class = gui.Gui()
        super(pageUi,self).__init__()
        if not (entry_name and button_name and other):
            raise TypeError,"miss argument or argument is None"
        self.entry = self._get_widget(entry_name)
        self.button = self._get_widget(button_name)
        self.other_widget = self._get_widget(other)
        self.other_widget.show_all()



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

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

    def make_header(self,titles,tv = None):
        widget = tv or self.other_widget
        cols = widget.get_columns()
        print "tv is %s,widget is %s"%(tv,widget)
##        if not cols == None:
##            for col in cols:
##                widget.remove_column(col)
        index = 0
        for head in titles:  #####
            column = gtk.TreeViewColumn(head, gtk.CellRendererText(), text=index)
            column.set_sort_column_id(index)
            widget.append_column(column)
            index+=1
        return False

class itemPage(pageUi):
    def __init__(self,widget_names = None):
        widget_names = widget_names or ['cb_entry','bt_search','treeview']
        #--call parent init
        super(itemPage,self).__init__(*widget_names)
        #--auto entry
        self.entry_completion = gtk.EntryCompletion()
        self.LS_entry = self._get_widget('LS_entry')
        self.entry_completion.set_model(self.LS_entry)
        self.entry_completion.set_text_column(0)
        self.entry_completion.set_inline_completion(1)
        #--combox
        self.combox = self._get_widget('cb_item_type')
        cell = gtk.CellRendererText()
        self.combox.pack_start(cell, True)
        self.combox.add_attribute(cell, 'text', 0)
        #--history
        self._build_history()
        #--redefine entry
        self.entry = self.entry.child

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



class duanzaoPage(pageUi):
    def __init__(self,widget_names = None):
        widget_names = widget_names or ['en_duanzao','btn_duanzao_gen','TA_duanzao']
        super(duanzaoPage,self).__init__(*widget_names)
        self.btn_copy = self._get_widget('btn_duanzao_copy')
        self.TB_duanzao = self._get_widget('TB_duanzao')
复制代码
运行效果图:
图片
---------------------
正确效果图:
图片
wfnh
帖子: 84
注册时间: 2008-02-20 11:46
联系:

Re: 【pygtk】部分组件不能显示

#2

帖子 wfnh » 2012-01-30 21:46

怎么没人?
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 【pygtk】部分组件不能显示

#3

帖子 枫叶饭团 » 2012-01-30 21:49

:em06 正在学,两年后帮你解答 :em09
wfnh
帖子: 84
注册时间: 2008-02-20 11:46
联系:

Re: 【pygtk】部分组件不能显示

#4

帖子 wfnh » 2012-01-30 22:09

怎么没人?
回复