MenuButton Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Marta Maria Casetti mmcasetti@gmail.com 2012 Ένα γραφικό στοιχείο που εμφανίζει ένα μενού όταν πατηθεί Ελληνική μεταφραστική ομάδα GNOME team@gnome.gr 2012-2015 Δημήτρης Σπίγγος dmtrs32@gmail.com 2012, 2013 Μαρία Θουκιδίδου marablack3@gmail.com 2014 Θάνος Τρυφωνίδης tomtryf@gmail.com 2014, 2015 MenuButton

Το γραφικό στοιχείο GtkMenuButton χρησιμοποιείται για την εμφάνιση ενός μενού όταν πατιέται. Αυτό το μενού μπορεί να δοθεί είτε ως GtkMenu, ή ως ένα αποσπασμένο GMenuModel. Το γραφικό στοιχείο GtkMenuButton μπορεί να κρατήσει οποιοδήποτε θυγατρικό γραφικό στοιχείο. Δηλαδή, μπορεί να κρατήσει σχεδόν κάθε άλλο τυπικό GtkWidget. Το πιο συχνά χρησιμοποιούμενο θυγατρικό είναι το παρεχόμενο GtkArrow.

Χρειάζεται να τρέξετε το GNOME 3.6 για να δουλέψει το MenuButton.

Ο χρησιμοποιούμενος κώδικας για παραγωγή αυτού παραδείγματος from gi.repository import Gtk from gi.repository import Gio import sys class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="Menubutton Example", application=app) self.set_default_size(600, 400) grid = Gtk.Grid() # a menubutton menubutton = Gtk.MenuButton() menubutton.set_size_request(80, 35) grid.attach(menubutton, 0, 0, 1, 1) # a menu with two actions menumodel = Gio.Menu() menumodel.append("New", "app.new") menumodel.append("About", "win.about") # a submenu with one action for the menu submenu = Gio.Menu() submenu.append("Quit", "app.quit") menumodel.append_submenu("Other", submenu) # the menu is set as the menu of the menubutton menubutton.set_menu_model(menumodel) # the action related to the window (about) about_action = Gio.SimpleAction.new("about", None) about_action.connect("activate", self.about_callback) self.add_action(about_action) self.add(grid) # callback for "about" def about_callback(self, action, parameter): print("You clicked \"About\"") class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) # the actions related to the application new_action = Gio.SimpleAction.new("new", None) new_action.connect("activate", self.new_callback) self.add_action(new_action) quit_action = Gio.SimpleAction.new("quit", None) quit_action.connect("activate", self.quit_callback) self.add_action(quit_action) # callback functions for the actions related to the application def new_callback(self, action, parameter): print("You clicked \"New\"") def quit_callback(self, action, parameter): print("You clicked \"Quit\"") self.quit() app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Χρήσιμες μέθοδοι για ένα γραφικό στοιχείο MenuButton

Στη γραμμή 33 το σήμα "activate" από την ενέργεια about_action συνδέεται με τη συνάρτηση επανάκλησης about_callback() χρησιμοποιώντας action.connect(signal, callback function). Δείτε για μια πιο λεπτομερή εξήγηση.

Η τοποθέτηση ενός μενού καθορίζεται από την ιδιότητα "direction" του κουμπιού μενού και τις ιδιότητες του μενού "halign" ή "valign". Για παράδειγμα, όταν η κατεύθυνση είναι Gtk.ArrowType.DOWN (άλλη επιλογή: UP) και η οριζόντια στοίχιση είναι Gtk.Align.START (άλλες επιλογές: CENTER και END), το μενού θα τοποθετηθεί κάτω από το κουμπί, με το αρχικό άκρο (ανάλογα με την κατεύθυνση του κειμένου) του μενού στοιχισμένο με το αρχικό άκρο του κουμπιού. Εάν δεν υπάρχει αρκετός χώρος κάτω από το κουμπί, το μενού αναδύεται πάνω από το κουμπί. Εάν η στοίχιση μπορεί να μετακινήσει μέρος του μενού εκτός οθόνης, είναι 'pushed in'.

Στην περίπτωση μιας κάθετης στοίχισης, οι δυνατές κατευθύνσεις είναι LEFT και RIGHT και η κάθετη στοίχιση είναι ξανά START, CENTER ή END.

Οι set_align_widget(alignment) and set_direction(direction) μπορούν να χρησιμοποιηθούν για να οριστούν αυτές οι ιδιότητες.

Αναφορές API

Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:

MenuButton