gpt4 book ai didi

python - 是否可以使用 gtk 在 Python 中的运行时编辑菜单项?

转载 作者:行者123 更新时间:2023-12-05 07:41:47 24 4
gpt4 key购买 nike

我正在用 python 编写简单的应用程序,我想使用 PyGtk 编写一个菜单。问题是,在“连接”菜单项下,我想要一个在程序运行期间发生变化的可用设备列表。到目前为止,我创建菜单项的代码如下:

import gtk
import gobject

class Foo(object):
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
gobject.timeout_add(2000, self.AddNewDevice_TEST)

table = gtk.Table(2,1,False)
window.add(table)

menubar = gtk.MenuBar()

self.connectMenu = gtk.Menu()
connectItem = gtk.MenuItem("Connect")
connectItem.set_submenu(self.connectMenu)

dev1 = gtk.MenuItem("device1")
dev1.connect("activate", self.connectToDev)
self.connectMenu.append(dev1)

menubar.append(connectItem)

table.attach(menubar, 0,1,0,1)

window.show_all()

def connectToDev(self, device):
pass

def AddNewDevice_TEST(self):
dev = gtk.MenuItem("device")
dev.connect("activate", self.connectToDev)
self.connectMenu.append(dev)


if __name__=='__main__':
gui = Foo()
gtk.main()

问题是,当新设备出现在我的系统中或断开连接时,我想添加它或从“连接”下的列表中删除它。我可以在菜单中编辑设备列表,但在调用 gtk.main() 之后我无法再进行更改。有没有办法在运行时做到这一点?

最佳答案

您可以在运行时在不同的线程中更改菜单项,例如GObject.idle_add(self.connectMenu.remove, dev1)GObject.idle_add(self.connectMenu.append, dev1)GNOME Developer Documentation 中为 GtkMenuShell 提到的方法可能会有帮助。

不要忘记在 MenuItems 上调用 show(),如 question 的答案中所述.

关于python - 是否可以使用 gtk 在 Python 中的运行时编辑菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45142496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com