我真的很努力地找到一个创建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: ...
非常感谢
答案 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 backport和advanced enum library)。要安装enum34
或aenum
:
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