2

我正在尝试移植我用 pygtk 制作的程序,它是一个通过全局快捷方式(使用 keybinder)启动的弹出菜单,用于运行特定的程序和命令。这个程序没有主窗口,关键是有一个简单、快速、轻便的“启动器”,随时随地可用。

即使使用 0 作为 event.time,旧的 menu.popup 也能正常工作(因为 keybinder 没有给出我请求时间的事件),但现在我收到了这个错误:

Warning: The property GtkStatusIcon:stock is deprecated and shouldn't be used anymore. It will be removed in a future version. self.icon.new_from_stock(Gtk.STOCK_OPEN)

这是我为说明问题而编写的一个示例:

from gi.repository import Gtk, Gdk
from gi.repository import Keybinder

menu_shortcut = "<Super>m"

class TestMenu:
    def __init__(self):
        self.menu = Gtk.Menu()
        item = Gtk.MenuItem('various items')
        self.menu.add(item)
        item = Gtk.MenuItem('Quit')
        item.connect('activate', Gtk.main_quit)
        self.menu.append(item)
        self.menu.show_all()
        self.icon = Gtk.StatusIcon()
        self.icon.new_from_stock(Gtk.STOCK_OPEN)
        self.icon.set_tooltip_text('MyMenu')
        self.icon.connect('popup-menu', self.popup, self.menu)

        Keybinder.init()
        Keybinder.bind(menu_shortcut, self.popup, 0, 0, self)

    def popup(self, widget, button, time, menu):
        self.menu.popup(None, None, None, None, button, time)

menu = TestMenu()
Gtk.main()

通过这个示例,我可以单击状态图标并获取菜单,但键盘快捷键只会给我上述错误。

注意:股票图标不起作用,我还在学习新的 API。

4

0 回答 0