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')
运行效果图:

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