私は python を使用して、約 50 個のgtk.labelを配置したgtk.windowを作成しています。これらのラベルは 10/15 分ごとに更新する必要があります。単一の固定コンテナーを使用してそれらをパックすることを選択し、コーディングを短縮するために、ラベルのデータをリストにグループ化しました (リストの各項目は、ラベルのテキスト、x & y、フォント ファミリー、前景色を含むサブリストです) )。さて、次のコードを使用してラベルを簡単に配置できます。
fix = gtk.Fixed()
for i in range(48):
lbl = gtk.Label(data[i][0])
lbl.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(data[i][1]))
lbl.modify_font(pango.FontDescription(data[i][2]))
fix.put(lbl, data[i][3], data[i][4])
win.add(fix)
しかし、次のように書くと、ラベルのテキストを更新する必要があるときに問題が発生します。
for i in range(48):
lbl.set_text(data[i][0])
どの data[i][0] をどのラベルに書き込む必要があるかが明確でないため、何も起こりません。そのため、コンテナにラベルを配置するためにgtk.Container.add_with_propertiesを使用し、更新のために gtk.Container.child_set_property を使用して問題を解決できると考えましたが、グーグルで見つけた使用法とドキュメントをクリアしていないため、行き詰まりましたかなり貧弱です。このコードを書くと、いくつか試してみました:
fix = gtk.Fixed()
for i in range(48):
fix.add_with_properties(gtk.Label(), 'text', data[i][0] , "x", str(data[i][3]), "y", str(data[i][3]))
結果は「TypeError: コンテナーはプロパティ `text' をサポートしていません」です ... そのため、コンテナーまたはその子ウィジェットを操作していると混乱します ?!? gtk.Container.add_with_propertiesとgtk.Container.child_set_propertyの使用法について誰かが明確にしてくれますか?!? さらに、後で簡単に認識して更新できるように、 gtk.Container.add_with_propertiesを使用して各ラベルに一種の「ID」を付与することは可能でしょうか、それとも私が知らない他の方法がありますか? ありがとう。