Blame platform-demos/el/menubutton.py.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="menubutton.py" xml:lang="el">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">MenuButton</title>
Packit 1470ea
    <link type="guide" xref="beginner.py#buttons"/>
Packit 1470ea
    <link type="next" xref="toolbar.py"/>
Packit 1470ea
    <revision version="0.1" date="2012-08-19" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Tiffany Antopolski</name>
Packit 1470ea
      <email its:translate="no">tiffany.antopolski@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Ένα γραφικό στοιχείο που εμφανίζει ένα μενού όταν πατηθεί</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Ελληνική μεταφραστική ομάδα GNOME</mal:name>
Packit 1470ea
      <mal:email>team@gnome.gr</mal:email>
Packit 1470ea
      <mal:years>2012-2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Δημήτρης Σπίγγος</mal:name>
Packit 1470ea
      <mal:email>dmtrs32@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2012, 2013</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Μαρία Θουκιδίδου</mal:name>
Packit 1470ea
      <mal:email>marablack3@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Θάνος Τρυφωνίδης</mal:name>
Packit 1470ea
      <mal:email>tomtryf@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014, 2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>MenuButton</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/menubutton.png"/>
Packit 1470ea
  

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

Packit 1470ea
Packit 1470ea
  <note>

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

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

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

Packit 1470ea
Packit 1470ea
    

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

Packit 1470ea
    
Packit 1470ea
    

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

Packit 1470ea
    
Packit 1470ea
    

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

Packit 1470ea
  </section>
Packit 1470ea
  
Packit 1470ea
  <section id="references">
Packit 1470ea
  <title>Αναφορές API</title>
Packit 1470ea
    

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

Packit 1470ea
    <list>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html">MenuButton</link>

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </section>
Packit 1470ea
</page>