缺少 python gi.repository.gtk 菜单分隔符

标签 python pygtk gtk3 pygobject

我想通过右键单击显示简单的弹出菜单,菜单工作正常但菜单分隔符丢失,我搜索了类似的示例但它们都使用 pygtk 但我使用的是 gi.repository 我不知道是我的代码错误还是这个问题全都与图书馆有关。

我的代码是

#!/usr/bin/python
from gi.repository import Gtk

class Win(Gtk.Window):

    def __init__(self):
        super(Win, self).__init__()
        self.resize(400,280)
        self.button = Gtk.Button()
        self.add(self.button)
        self.button.connect("button-press-event", self.button_press)
        self.connect("destroy", Gtk.main_quit)
        self.show_all()

    def button_press(self,widget,event):
        if event.button == 3:
            self.menu = Gtk.Menu()
            self.menu_copy = Gtk.MenuItem("Copy")
            self.menu_paste = Gtk.MenuItem("Paste")
            self.menu_select_all = Gtk.MenuItem("Select All")
            self.menu.append(self.menu_copy)
            self.menu.append(self.menu_paste)
            # separator 1
            self.menu.append(Gtk.SeparatorMenuItem())
            # separator 2
            self.menu.append(Gtk.MenuItem())

            self.menu.append(self.menu_select_all)

            self.menu.show_all()
            self.menu.popup(None, None, None, None, event.button, event.get_time())
            pass
def main():
    app = Win()
    Gtk.main()


if __name__ == "__main__":    
    main()

这是我的菜单截图Example 1

最佳答案

你有什么版本的pygobject?我在 6 月份提交了一个补丁,它在 3.3.4 中得到修复:https://bugzilla.gnome.org/show_bug.cgi?id=670575

如果当您使用 Gtk.SeparatorMenuItem.new() 而不是构造函数时分隔符工作正常,您就会知道这是上述错误。

关于缺少 python gi.repository.gtk 菜单分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364521/

相关文章:

Ubuntu Unity 的状态图标 api?

c++ - 如何使用耗时的操作更新 C++ 中的 GTK+ GUI?

python Gtk.PrintOperation 打印 pdf

python - 在 gtk.Builder.connect_signals 上捕获 PyGTK RuntimeWarning

Python GTK+ : create custom signals?

python - 在 KeyboardInterrupt 上关闭异步循环 - 运行停止例程

python - 在 Python 中使用字典代替动态变量名

linux - 无法初始化窗口并等待进程在 Python 3 + GTK+ 3 中结束

python - 在 Google App Engine 上连接 python 后端和 vue.js 前端

python - 程序在 IDLE 下工作,但在命令行下失败