3

右クリックで簡単なポップアップ メニューを表示したい、メニューは正しく機能するが、メニュー セパレーターがない、同様の例を検索したが、それらはすべて 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()

これが私のメニュー例1のスクリーンショットです

4

1 に答える 1

5

使用している pygobject のバージョンは何ですか? 6 月にパッチを提出し、3.3.4 で修正されました: https://bugzilla.gnome.org/show_bug.cgi?id=670575

コンストラクターの代わりに使用するときにセパレーターが適切に機能する場合、Gtk.SeparatorMenuItem.new()それは前述のバグです。

于 2012-11-14T00:07:58.030 に答える