如何将gobject.Gtype参数传递给函数中的Gtk.ListStore

时间:2018-01-21 19:19:50

标签: python gtk3

我想向函数传递一个类型和数据列表来注册Gtk.ListStore对象。 它使用单一类型,直接作为参数传递,但只要有几种类型就需要使用容器(列表?)。在这种情况下,我不知道如何将这些类型(str,int等)重新绑定到gobject.Gtype中。 如果有人有一个很棒的解决方案。 示例代码如下。

提前谢谢。

# Fonctions
def initListStore(lesTypes, laListe):
  leStore = Gtk.ListStore(gobject.Gtype(lesTypes))
  for item in laListe:
    leStore.append(item)
  return leStore

# Appli
liste = [('Albert','Einstein'),('Salvador','Dali'),('Alexandre','Dumas')]
lesTypes = 'str str'
lsAuteurs = initListStore(lesTypes,liste)
for row in lsAuteurs:
  print (row[:])

2 个答案:

答案 0 :(得分:1)

以下是一种可能的解决方案:

from gi.repository import Gtk
def initListStore(lesTypes, laListe):
    leStore = Gtk.ListStore()
    leStore.set_column_types(lesTypes)
    for item in laListe:
      leStore.append(item)
    return leStore

# Appli
liste = [('Albert','Einstein'),('Salvador','Dali'),('Alexandre','Dumas')]
lesTypes = (str, str)
lsAuteurs = initListStore(lesTypes,liste)
for row in lsAuteurs:
    print (row[:])

答案 1 :(得分:1)

最后,我通过将listStore的管理完全外包给函数本身来改进了函数,函数本身现在只接收一个参数:数据列表。非常感谢解锁我的 theGtknerd

[10, 30, 40]
[50, 20, 30]
[50, 30]
[80]