2017-03-04 6 views
1

Ich habe ein Skript in Python3 und Gtk3 geschrieben, und ich möchte es das Fenster schließen, wenn ich auf den "Schließen" -Menüpunkt klicke, aber wenn ich es nichts anhänge . Ich benutze Ubuntu 16.10. Dieses
ist das Skript:Menüpunkt auf Klick-Ereignis nicht in GTK3 + Python3

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

class MenuTest(Gtk.Window): 
    def __init__(self): 
     Gtk.Window.__init__(self, title='MenuTest') 

     Box=Gtk.VBox() 
     self.add(Box) 

     Menubar=Gtk.MenuBar() 
     Menu1=Gtk.Menu() 
     Mfile=Gtk.MenuItem("_File") 
     Mfile.set_submenu(Menu1) 
     Clos=Gtk.MenuItem("Close") 
     Menu1.append(Clos) 
     Clos.connect('button-press-event', Gtk.main_quit) 
     Menubar.append(Mfile) 
     Box.pack_start(Menubar, expand=True, fill=True, padding=0) 


Wind=MenuTest() 
Wind.connect('delete-event', Gtk.main_quit) 
Wind.show_all() 
Gtk.main() 

Wo mache ich falsch?

+0

Sie müssen das Signal "aktivieren" und nicht "Button-Press-Event" verwenden. –

+0

Es hat funktioniert! Ich danke dir sehr! Wenn Sie Ihren Kommentar in eine Antwort konvertieren möchten, werde ich es als die richtige Antwort festlegen –

Antwort

1

Sie müssen das Signal "aktivieren" und nicht "Button-drücken-Ereignis" verwenden.

Das Signal "button-press-event" stammt aus der Klasse Gtk.Widget, die Gtk.MenuItem abgeleitet ist. Dieses Signal wird ausgegeben, wenn eine Taste gedrückt wird, die normalerweise von einer Maus stammt. Die Ereignismaske muss für das Widget gesetzt werden, um dieses Signal für dieses Signal zu empfangen. Es ist Gdk.EventMask.BUTTON_PRESS_MASK. Normalerweise wird dieses Signal nicht benötigt.

Gtk.MenuItem hat die "activate signal" die ausgegeben wird, wenn ein Element aktiviert ist. Dies könnte durch eine Maustaste sowie Tastatur, Touchscreen, etc. sein.

Verwandte Themen