即时通讯尝试将PyGTK中的一些小例子移植到新的PyGobject绑定中,但是,即使没有错误,我仍然用popupmenu命中了一个障碍,没有菜单显示在右键点击,这里是代码,Gtk.StatusIcon PopupMenu python
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()
我认为问题是我不是讲述self.statusicon在那里的菜单,但它在任何参数的个数不工作,因为他们都希望有一个小部件精氨酸或者没有,不是statusicon,任何智能ppl在这里有一个想法,我会出错吗?
我甚至没有在'Gtk.StatusIcon'的文档中看到'StatusIcon.position_menu'。我看到['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,其中抱怨,如果我尝试并给它一个状态图像我为旧方法做的方式。 (相关答案:是的:)) – Mike
@Mike,好的,对不起。自从我使用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'签名真的改变了,因为你的代码建议?这似乎是一些严重的API损坏,如果是这样的。) – senderle