2

パラメータでいっぱいの辞書があるとしましょう。

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

後で属性を追加したい場合に備えて、このリストの各項目に対してaLabelとaを手続き的に作成するループを呼び出したいと思います。SpinBoxウィンドウを作成して、更新された値を問題なく返すことができます。私の唯一の問題は、編集する属性が7つであろうと20つであろうと、必要に応じてすべてのウィジェットを作成したいということです。

したがって、ラベルオブジェクトを呼び出しspeed_Labelたり、インテリジェンスラベルオブジェクトintelligence_Labelを呼び出したり、速度の値を含むスピンボックスを呼び出したりする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")
4

1 に答える 1

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)
于 2012-06-14T00:41:12.187 に答える