# 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