# Κουμπί (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
Ένα κουμπί γραφικού συστατικού που εκπέμπει σήμα όταν πατηθεί
Δημήτρης Σπίγγος
dmtrs32@gmail.com 2012, 2013

# Κουμπί

Ένα γραφικό συστατικό κουμπιού συνδεμένο με μια απλή συνάρτηση επανάκλησης.

# Ο χρησιμοποιούμενος κώδικας για παραγωγή αυτού παραδείγματος

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow): # a window

def __init__(self, app): Gtk.Window.__init__(self, title="GNOME Button", application=app) self.set_default_size(250, 50)

# a button button = Gtk.Button() # with a label button.set_label("Click me") # connect the signal "clicked" emitted by the button # to the callback function do_clicked button.connect("clicked", self.do_clicked) # add the button to the window self.add(button)

# callback function connected to the signal "clicked" of the button def do_clicked(self, button): print "You clicked me!"

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)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

# Χρήσιμες μέθοδοι για ένα γραφικό συστατικό κουμπιού

Στη γραμμή 16 το σήμα `"clicked"` από το κουμπί συνδέεται με τη συνάρτηση επανάκλησης `do_clicked()` χρησιμοποιώντας `widget.connect(signal, callback function)`. Δείτε για μια πιο λεπτομερή εξήγηση.

Ο `set_relief(Gtk.ReliefStyle.NONE)` ορίζει σε κανένα τον τύπο αναγλύφου των άκρων του Gtk.Button - καθώς αντιτίθεται στο `Gtk.ReliefStyle.NORMAL`.

Εάν η ετικέτα του κουμπιού είναι ένα εικονίδιο παρακαταθήκης, ο `set_use_stock(True)` ορίζει την ετικέτα ως το όνομα του αντίστοιχου εικονιδίου παρακαταθήκης.

Για ορισμό μιας εικόνας (π.χ. μια εικόνα παρακαταθήκης) για το κουμπί `button`:

image = Gtk.Image() image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON) button.set_image(image)

Θα πρέπει να μην ορίσετε μια ετικέτα για το κουμπί μετά από αυτό, αλλιώς θα εμφανίσει την ετικέτα και όχι την εικόνα.

Εάν χρησιμοποιήσουμε `set_focus_on_click(False)` το κουμπί δεν θα εστιάσει όταν πατηθεί από το ποντίκι. Αυτό μπορεί να είναι χρήσιμο σε θέσεις όπως εργαλειοθήκες, έτσι ώστε η εστίαση του πληκτρολογίου να μην αφαιρεθεί από την κύρια περιοχή της εφαρμογής.

# Αναφορές API

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

GtkButton

GtkWindow