私はPyGTKから新しいPyGobjectバインディングにいくつかの小さな例を移植しようとしていますが、iveはポップアップメニューでロードブロッキングを犯しました。エラーがなくてもメニューは右クリックで表示されません。 、Gtk.StatusIcon PythonのPopupMenu
from gi.repository import Gtk
class aStatusIcon:
def __init__(self):
self.statusicon = Gtk.StatusIcon()
self.statusicon.set_from_stock(Gtk.STOCK_HOME)
self.statusicon.connect("popup-menu", self.right_click_event)
window = Gtk.Window()
window.connect("destroy", lambda w: Gtk.main_quit())
window.show_all()
def right_click_event(self, icon, button, time):
menu = Gtk.Menu()
about = Gtk.MenuItem()
about.set_label("About")
quit = Gtk.MenuItem()
quit.set_label("Quit")
about.connect("activate", self.show_about_dialog)
quit.connect("activate", Gtk.main_quit)
menu.append(about)
menu.append(quit)
menu.show_all()
#menu.popup(None, None, gtk.status_icon_position_menu, button, time, self.statusicon) # previous working pygtk line
menu.popup(None, None, None, Gtk.StatusIcon.position_menu, button, time) #i assume this is problem line
def show_about_dialog(self, widget):
about_dialog = Gtk.AboutDialog()
about_dialog.set_destroy_with_parent(True)
about_dialog.set_name("StatusIcon Example")
about_dialog.set_version("1.0")
about_dialog.set_authors(["Andrew Steele"])
about_dialog.run()
about_dialog.destroy()
aStatusIcon()
Gtk.main()
任意のスマートではなく、statusicon、私はこの問題は、そこにself.statusiconに関するメニューを語っていないイムあると仮定し、それらはすべてがウィジェットの引数またはnoneをしたいので、それは引数のいずれかで仕事をdoesntここにpplはどこに間違っているのか考えがありますか?
'StatusIcon.position_menu'は' Gtk.StatusIcon'のドキュメントにはありません。私は '' gtk.status_icon_position_menu'](http://www.pygtk.org/docs/pygtk/class-gtkstatusicon.html#function-gtk--status-icon-position-menu)を見ています。これは明確に '' StatusIcon '。もう動作しませんか? (関連する質問:あなたは[Hairy_Palms](http://ubuntuforums.org/showthread.php?t=1789358)ですか?それに答える必要はありません) – senderle
StatusIcon.position_menuはgtk3を呼び出すための新しいgtk3イントロスペクションの方法です.status_icon_position_menu、これは、私が試して、それが私は古いメソッドのためにやったようにstatusiconを与える場合、文句を言う。 (関連回答:はい:)) – Mike
@Mike、ok、申し訳ありません。私がpygtkを使ってからしばらくしていたのですが...私のアプローチは、 'StatusIcon'を受け入れる自分自身の位置決め関数を書くことでしょう。[' StatusIcon.get_geometry() '](http://www.pygtk。 org/docs/pygtk/class-gtkstatusicon.html#method-gtkstatusicon-get-geometry)を返し、['(x、y、push_in)'](http://www.pygtk.org/docs/pygtk /class-gtkmenu.html#method-gtkmenu-popup)タプル。しかし、これはWAGであり、これらの機能は変更されていないと仮定しています。 (あなたのコードが示唆しているように、実際に変更された 'menu.popup'シグネチャを持っているのですか?) – senderle