PyQt中字典的通用值编辑器GUI

时间:2012-06-14 00:04:12

标签: python pyqt

说我有一个充满参数的词典:

{speed = 1, intelligence = 3, dexterity = 2}

我想调用一个循环,为程序中的每个项目创建LabelSpinBox,以防我以后想要添加更多属性。我可以创建窗口并返回更新的值就好了。我唯一的问题是我想要创建所有小部件,无论我有7或20个属性要编辑。

因此标签对象可以被称为speed_Label和智能标签对象intelligence_Label,而包含速度值的spinbox将是speed_SpinBox等等,然后我可以通过轻松回来。但是,这个

a)看起来很差的命名练习

b)看起来很难看,因为我无法找到如何在程序上给出对象名称,比如说

for KEY in dict.keys(): # say the KEY is "Speed"
    # this would produce a Label object called Speed_Label
    # which displays the text "Speed"
    "KEY" + "_Label" = QLabel("KEY")

1 个答案:

答案 0 :(得分:3)

为什么不简单地使用列表或词典?

这样的事情应该有效:

widgets = {}
form = QFormLayout()
for key, value in your_dict.iteritems():
    widgets[key] = widget = {}
    widget['spinbox'] = spinbox = QSpinBox()
    spinbox.setValue(value)
    form.addRow(key, spinbox)