Python gtk:ComboBoxEntry与Enum

时间:2014-06-25 08:54:27

标签: python-2.7 combobox enums pygtk

我真的很努力地找到一个创建Enum的示例并将其作为模型发送到ComboBoxEntry。

有人可以上传正确方法的示例吗?

这是我的代码的开头:

model = "one", "two", "three"
liststore = gtk.ListStore(str)
for item in model:
    liststore.append([item])
cbe = gtk.ComboBoxEntry(liststore)

我希望 model 能够编写:

# for example:
cbe.set_active(one)
# or
if cbe.get_active() == model.one: ...

非常感谢

2 个答案:

答案 0 :(得分:0)

我用这个:

    ##  Length
    nLines      = tableData.data.shape[0]
    ##  Width
    nColons     = len(tableData.columns)
    ##  +1 adds an extra column for numbering (at the left side)
    types       = [str] * (nColonnes + 1)
    ##  build it
    modelT      = gtk.ListStore( * types )

这应该适合你:

>>> model = ["one", "two", "three"]
>>> types = [str] * len(model)
>>> lists = gtk.ListStore( * types )

答案 1 :(得分:0)

Python 3.4有一个新的Enum数据类型(同样可用enum34 backportadvanced enum library)。要安装enum34aenum

  • pip install enum34
  • pip install aenum

之后,您可以将model设为Enum,如此:

from enum import Enum    # or from aenum import Enum

class Model(str, Enum):
    one = 'one'
    two = 'two'
    three = 'three'

这些结果:

>>> list(Model)
[<Model.one: 'one'>, <Model.two: 'two'>, <Model.three: 'three'>]

>>> Model.one
<Model.one: 'one'>

>>> Model.one == 'one'
True