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

📄 editable_cells.py

📁 使用Pygtk写的几个例子
💻 PY
字号:
#!/usr/bin/env python'''Tree View/Editable CellsThis demo demonstrates the use of editable cells in a GtkTreeView.If you're new to the GtkTreeView widgets and associates, look into theGtkListStore example first.'''# pygtk version: Maik Hertha <maik.hertha@berlin.de>import gobjectimport gtk#   columns(  COLUMN_NUMBER,  COLUMN_PRODUCT,  COLUMN_EDITABLE) = range(3)# dataarticles = [    [ 3, "bottles of coke", True ],    [ 5, "packages of noodles", True ],    [ 2, "packages of chocolate chip cookies", True ],    [ 1, "can vanilla ice cream", True ],    [ 6, "eggs", True ]]class EditableCellsDemo(gtk.Window):    def __init__(self, parent=None):        gtk.Window.__init__(self)        try:            self.set_screen(parent.get_screen())        except AttributeError:            self.connect('destroy', lambda *w: gtk.main_quit())        self.set_title(self.__class__.__name__)        self.set_border_width(5)        self.set_default_size(320, 200)        vbox = gtk.VBox(False, 5)        self.add(vbox)        label = gtk.Label("Shopping list (you can edit the cells!)")        vbox.pack_start(label, False, False)        sw = gtk.ScrolledWindow()        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)        vbox.pack_start(sw)        # create model        model = self.__create_model()        # create tree view        treeview = gtk.TreeView(model)        treeview.set_rules_hint(True)        treeview.get_selection().set_mode(gtk.SELECTION_SINGLE)        self.__add_columns(treeview)        sw.add(treeview)        # some buttons        hbox = gtk.HBox(True, 4)        vbox.pack_start(hbox, False, False)        button = gtk.Button(stock=gtk.STOCK_ADD)        button.connect("clicked", self.on_add_item_clicked, model)        hbox.pack_start(button)        button = gtk.Button(stock=gtk.STOCK_REMOVE)        button.connect("clicked", self.on_remove_item_clicked, treeview)        hbox.pack_start(button)        self.show_all()    def __create_model(self):        # create list store        model = gtk.ListStore(            gobject.TYPE_INT,            gobject.TYPE_STRING,            gobject.TYPE_BOOLEAN       )        # add items        for item in articles:            iter = model.append()            model.set (iter,                  COLUMN_NUMBER, item[COLUMN_NUMBER],                  COLUMN_PRODUCT, item[COLUMN_PRODUCT],                  COLUMN_EDITABLE, item[COLUMN_EDITABLE]           )        return model    def __add_columns(self, treeview):        model = treeview.get_model()        # number column        renderer = gtk.CellRendererText()        renderer.connect("edited", self.on_cell_edited, model)        renderer.set_data("column", COLUMN_NUMBER)        column = gtk.TreeViewColumn("Number", renderer, text=COLUMN_NUMBER,                               editable=COLUMN_EDITABLE)        treeview.append_column(column)        # product column        renderer = gtk.CellRendererText()        renderer.connect("edited", self.on_cell_edited, model)        renderer.set_data("column", COLUMN_PRODUCT)        column = gtk.TreeViewColumn("Product", renderer, text=COLUMN_PRODUCT,                               editable=COLUMN_EDITABLE)        treeview.append_column(column)    def on_add_item_clicked(self, button, model):        new_item = [0, "Description here", True]        articles.append(new_item)        iter = model.append()        model.set (iter,            COLUMN_NUMBER, new_item[COLUMN_NUMBER],            COLUMN_PRODUCT, new_item[COLUMN_PRODUCT],            COLUMN_EDITABLE, new_item[COLUMN_EDITABLE]       )    def on_remove_item_clicked(self, button, treeview):        selection = treeview.get_selection()        model, iter = selection.get_selected()        if iter:            path = model.get_path(iter)[0]            model.remove(iter)            del articles[ path ]    def on_cell_edited(self, cell, path_string, new_text, model):        iter = model.get_iter_from_string(path_string)        path = model.get_path(iter)[0]        column = cell.get_data("column")        if column == COLUMN_NUMBER:            articles[path][COLUMN_NUMBER] = int(new_text)            model.set(iter, column, articles[path][COLUMN_NUMBER])        elif column == COLUMN_PRODUCT:            old_text = model.get_value(iter, column)            articles[path][COLUMN_PRODUCT] = new_text            model.set(iter, column, articles[path][COLUMN_PRODUCT])def main():    EditableCellsDemo()    gtk.main()if __name__ == '__main__':    main()

⌨️ 快捷键说明

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