⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gladewindow.py

📁 python programm from Russia
💻 PY
字号:
#!/usr/bin/env python#----------------------------------------------------------------------# GladeWindow.py# Dave Reed# 12/15/2002#----------------------------------------------------------------------import osimport gtkimport gtk.glade#----------------------------------------------------------------------def search_file(filename, search_path):    """Given a search path, find file    """    file_found = 0    paths = search_path.split(os.pathsep)    for path in paths:        if os.path.exists(os.path.join(path, filename)):            file_found = 1            break    if file_found:        return os.path.abspath(os.path.join(path, filename))    else:        return None#----------------------------------------------------------------------class GladeWindow(object):    '''A base class for displaying a GUI developed with Glade; create    a subclass and add any callbacks and other code; the derived class    __init__ method needs to call GladeWindow.__init__; callbacks that    start with on_ are automatically connected'''    #----------------------------------------------------------------------    def set_search_path(cls, path):        '''set the search path for looking for the .glade files'''        cls.search_path = path    set_search_path = classmethod(set_search_path)    #----------------------------------------------------------------------    def __init__(self, filename, top_window, widget_list, handlers,                 pull_down_dict=None):        '''        __init__(self, filename, top_window, widget_list, pull_down_dict=None):        filename: filename of the .glade file        top_window: the glade name of the top level widget (this will then           be accessible as self.top_window)        widget_list: a list of glade names; the dictionary self.widgets           will be created that maps these name to the actual widget object        pull_down_dict: a dictionary that maps combo names to a tuple of            strings to put in the combo        '''                self.widget_list = widget_list        try:            search_path = GladeWindow.search_path        except:            search_path = './'        fname = search_file(filename, search_path)        self.xml = gtk.glade.XML(fname)        # connect callbacks        self.cb_dict = {}        for f in handlers:            self.cb_dict[f] = getattr(self, f)        self.xml.signal_autoconnect(self.cb_dict)        self.widgets = {}        for w in self.widget_list:            self.widgets[w] = self.xml.get_widget(w)        if pull_down_dict is not None:            for w, l in pull_down_dict.items():                self.widgets[w].set_popdown_strings(l)                    # set attribute for top_window so it can be accessed as self.top_window        self.top_window = self.xml.get_widget(top_window)        # window to show when this one is hidden        self.prev_window = None        # initialize callback func        self.cb_func = None    #----------------------------------------------------------------------    def set_top_window(self, top_window):        '''set_top_window(self, top_window):        notebook pages that are in containers need to be able to change        their top window, especially so the dialog is set_transient_for        the actual main window        '''                self.top_window = top_window            #----------------------------------------------------------------------    def set_callback_function(self, cb_func, *cb_args, **cb_kwargs):        '''set_callback_function(cb_func, *cb_args, **cb_kwargs):        stores the cb_func and its cb_args and cb_kwargs        '''        self.cb_func = cb_func        self.cb_args = cb_args        self.cb_kwargs = cb_kwargs                #----------------------------------------------------------------------    def show(self, center=1, prev_window=None, *args):        '''show(self, center=1, prev_window=None, *args):        display the top_window widget        '''        if prev_window is not None:            self.prev_window = prev_window        if center:            self.top_window.set_position(gtk.WIN_POS_CENTER_ALWAYS)        else:            self.top_window.set_position(gtk.WIN_POS_NONE)        self.top_window.show()    #----------------------------------------------------------------------    def hide(self):        '''hide(self):        hides the current window, shows self.prev_window        if self.cb_func is not None, it is called with its cb_args        and cb_kwargs        '''        self.top_window.hide()        if self.prev_window is not None:            self.prev_window.show()        if self.cb_func is not None:            self.cb_func(*self.cb_args, **self.cb_kwargs)        if self.prev_window is None:            gtk.main_quit()            #----------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -