将kargs发送到gtk.ListStore

时间:2014-06-24 06:47:59

标签: python-2.7 pygtk

我正在使用带有ListStore的TreeView。我的代码是这样的:

class a:
    def __init__(self):
        .
        .
        types = int, str, str, int
        myTree, myStore = b.create_treeview(types)
        .
        .


class b:
    def create_treeview(types):
        #create gtk tree view object
        #return treeview and store (for the columns)
        store = gtk.ListStore(types[0], types[1], types[2], types[3])
        treeView = gtk.TreeView(store)
        treeView.set_rules_hint(True)
        return treeView, store

正如您所看到的,b类为b类做了一些代码。 变量 types 帮助我将所有类型发送到商店。问题是我在b级使用它的方式。有没有什么可以让它更通用于重复使用?

谢谢

1 个答案:

答案 0 :(得分:2)

除非您在其他地方再次使用,否则无需在types中定义a

myTree, myStore = b.create_treeview((int, str, str, int))

您可以通过以下方式使b更通用:

store = gtk.ListStore(*types)

将打开"解包"将类型元组转换为ListStore的单独参数(有关详细说明,请参阅this question)。


Neater仍然可能是:

def create_treeview(*types):
    store = gtk.ListStore(*types)
    ...

现在您可以将单独的参数传递给create_treeview

myTree, myStore = b.create_treeview(int, str, str, int)

或者

myTree, myStore = b.create_treeview(*types)