晚上好,
在IronPython中编写一个应用程序,它将作为一个消息欺骗者,用于尚未开发得足以测试我们系统的系统。应用程序的一部分是一组显示消息和命令值的表。在命令的情况下,我们的命令的某些字段具有枚举值。命令表中有一个下拉框,其中包含那些枚举选项。
我的方法是为每条消息创建一个DataSet。 DataSet有一个DataTable,其中包含消息字段和消息值。它还为消息中的每个枚举类型提供了一个表。因此,下面的代码是我用来确定该字段是普通字段还是枚举字段。
msg = mpas.M120()
msg_fields = msg.DESCRIPTOR.fields
for field in msg_fields:
fieldEnumType = msg.DESCRIPTOR.fields_by_name[field.name].enum_type
print("{} --> EnumType: {}".format(field.name, fieldEnumType.name if fieldEnumType != None else 'None'))
我也发现这对我也有用:
msg = mpas.M120()
msg_fields = msg.DESCRIPTOR.fields
for k,v in msg.DESCRIPTOR.fields_by_name.items():
print ("{} --> {}".format(k, ((v.enum_type).name if v.enum_type != None else 'None')))
我将从中获得的是每个枚举字段的枚举名称。我现在希望能够获得找到的每个枚举字段的所有值的列表。这是诀窍,某个消息使用的枚举,并且只在消息级别定义该消息(即mpas.M120()..其他消息使用的枚举在顶层定义(即mpas ..
那么,我将如何找到这些枚举的值,以便我可以填充我的下拉框?我现在一直在为这一天的大部分工作而努力,我无法理解。
提前致谢...
答案 0 :(得分:0)
您已找到v.enum_type
,这是与该字段的枚举类型对应的EnumDescriptor
。您从这里获得name
,但此对象还包含值列表。请参阅此处的文档: