我正在使用 python 制作一个gtk.window ,上面放置了大约 50 个gtk.label,这些标签需要每 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”,以便我以后可以轻松识别和更新,或者还有其他我不知道的方法可以做到这一点?谢谢。