我正在使用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])
没有任何反应,因为不清楚哪个数据[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”,以便我以后可以轻松识别和更新,或者还有其他方法可以做到这一点我不知道? 感谢。