sto cercando di portare alcuni piccoli esempi da PyGTK ai nuovi collegamenti PyGobject, ma i miei hanno colpito un roadblock con un popupmenu, nonostante non abbia ricevuto errori, nessun menu viene mostrato su rightclick, ecco il codice ,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()
Suppongo che il problema è im non dire il menu su self.statusicon in là, ma doesnt lavoro in una qualsiasi delle args poiché tutti vogliono un widget arg o nessuno, non uno statusicon, qualsiasi intelligente ppl qui ha avuto un'idea di dove sto andando storto?
Non vedo nemmeno 'StatusIcon.position_menu' nella documentazione di' Gtk.StatusIcon'. Vedo ['gtk.status_icon_position_menu'] (http://www.pygtk.org/docs/pygtk/class-gtkstatusicon.html#function-gtk--status-icon-position-menu), che accetta chiaramente un' StatusIcon '. Non funziona più? (Domanda correlata: sei [Hairy_Palms] (http://ubuntuforums.org/showthread.php?t=1789358)? Non devi rispondere a questo.) – senderle
StatusIcon.position_menu è il nuovo modo di introspezione gtk3 di chiamare gtk .status_icon_position_menu, che si lamenta se provo a dargli uno statusicon come ho fatto per il vecchio metodo. (Risposta correlata: Sì :)) – Mike
@Mike, ok, scusa. È passato un po 'di tempo da quando usavo pygtk ... Immagino che il mio approccio sarebbe scrivere la mia funzione di posizionamento che accetti un 'StatusIcon', chiama [' StatusIcon.get_geometry() '] (http: //www.pygtk. org/docs/pygtk/class-gtkstatusicon.html # method-gtkstatusicon - get-geometry), e restituisce un ['(x, y, push_in)'] (http://www.pygtk.org/docs/pygtk /class-gtkmenu.html#method-gtkmenu--popup) tupla. Ma questo è un WAG e presuppone che queste funzioni non siano cambiate. (A proposito, la firma 'menu.popup' è veramente cambiata, come suggerisce il codice? Sembra una seria rottura dell'API se è così.) – senderle