如何在运行时将项目添加到通过空地创建的 gtk.ComboBox 中?

发布于 2024-07-27 17:39:15 字数 536 浏览 1 评论 0 原文

我正在使用 Glade 3 为我正在开发的 PyGTK 应用程序创建 GtkBuilder 文件。 它用于管理带宽,因此我有一个 gtk.ComboBox 用于选择要跟踪的网络接口。

如何在运行时将字符串添加到组合框? 这就是我到目前为止所拥有的:

self.tracked_interface = builder.get_object("tracked_interface")

self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING)
self.iface_list_store.append(["hello, "])
self.iface_list_store.append(["world."])
self.tracked_interface.set_model(self.iface_list_store)
self.tracked_interface.set_active(0)

但组合框仍然是空的。 我尝试过 RTFM'ing,但只是更加困惑,如果有的话。

干杯。

I'm using Glade 3 to create a GtkBuilder file for a PyGTK app I'm working on. It's for managing bandwidth, so I have a gtk.ComboBox for selecting the network interface to track.

How do I add strings to the ComboBox at runtime? This is what I have so far:

self.tracked_interface = builder.get_object("tracked_interface")

self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING)
self.iface_list_store.append(["hello, "])
self.iface_list_store.append(["world."])
self.tracked_interface.set_model(self.iface_list_store)
self.tracked_interface.set_active(0)

But the ComboBox remains empty. I tried RTFM'ing, but just came away more confused, if anything.

Cheers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

↙厌世 2024-08-03 17:39:15

或者您可以使用 gtk.combo_box_new_text()。 然后,您将能够使用 gtk 快捷方式 追加插入前置删除 文本。

combo = gtk.combo_box_new_text()
combo.append_text('hello')
combo.append_text('world')
combo.set_active(0)

box = builder.get_object('some-box')
box.pack_start(combo, False, False)

Or you could just create and insert the combo box yourself using gtk.combo_box_new_text(). Then you'll be able to use gtk shortcuts to append, insert, prepend and remove text.

combo = gtk.combo_box_new_text()
combo.append_text('hello')
combo.append_text('world')
combo.set_active(0)

box = builder.get_object('some-box')
box.pack_start(combo, False, False)
橘虞初梦 2024-08-03 17:39:15

嘿,我实际上可以回答我自己的问题!

您必须将 gtk.CellRendererText 添加到其中才能实际渲染:

self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING)
self.iface_list_store.append(["hello, "])
self.iface_list_store.append(["world."])
self.tracked_interface.set_model(self.iface_list_store)
self.tracked_interface.set_active(0)
# And here's the new stuff:
cell = gtk.CellRendererText()
self.tracked_interface.pack_start(cell, True)
self.tracked_interface.add_attribute(cell, "text", 0)

当然,从 PyGTK 常见问题解答

感谢 Joe McBride 更正了示例

Hey, I actually get to answer my own question!

You have to add gtk.CellRendererText into there for it to actually render:

self.iface_list_store = gtk.ListStore(gobject.TYPE_STRING)
self.iface_list_store.append(["hello, "])
self.iface_list_store.append(["world."])
self.tracked_interface.set_model(self.iface_list_store)
self.tracked_interface.set_active(0)
# And here's the new stuff:
cell = gtk.CellRendererText()
self.tracked_interface.pack_start(cell, True)
self.tracked_interface.add_attribute(cell, "text", 0)

Retrieved from, of course, the PyGTK FAQ.

Corrected example thanks to Joe McBride

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文