im пытается перенести некоторые небольшие примеры из PyGTK в новые привязки PyGobject, но ive попал в блокпост с всплывающим меню, несмотря на отсутствие ошибок, в меню справа не отображается меню, вот код ,Gtk.StatusIcon PopupMenu in 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 там, но он не работает ни в одном из аргументов, так как все они хотят виджет ARG или ничего, а не statusicon, любой умный У 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 для вызова gtk .status_icon_position_menu, который жалуется, если я попытаюсь дать ему statusicon так, как я сделал для старого метода. (Ответ на этот вопрос: Да :)) – 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