Mik*_*ike 11 python pygtk pygobject
我试图将PyGTK中的一些小例子移植到新的PyGobject绑定中,但是我遇到了一个带有弹出菜单的障碍,尽管没有错误,右键单击没有显示菜单,这是代码,
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()
Run Code Online (Sandbox Code Playgroud)
我假设问题是我没有在那里告诉关于self.statusicon的菜单,但它在任何args中都不起作用,因为它们都需要一个小部件arg或none,而不是一个statusicon,任何聪明的人都知道我去哪里错误?
Mik*_*ike 16
啊,最后,如果有其他人有这个问题,它得到了解决,感谢gimpnet上的一个人的一些很棒的帮助#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):
self.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)
self.menu.append(about)
self.menu.append(quit)
self.menu.show_all()
def pos(menu, icon):
return (Gtk.StatusIcon.position_menu(menu, icon))
self.menu.popup(None, None, pos, self.statusicon, button, time)
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4830 次 |
| 最近记录: |