通过gtk.Container.add_with_properties和gtk.Container.child_set_property创建/更新标签

时间:2012-07-12 09:42:01

标签: pygtk

我正在使用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”,以便我以后可以轻松识别和更新,或者还有其他方法可以做到这一点我不知道? 感谢。

0 个答案:

没有答案