即時通訊嘗試將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