Ένα γραφικό στοιχείο κουμπιού συνδεμένο με μια απλή συνάρτηση επανάκλησης.
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)
το κουμπί δεν θα εστιάσει όταν πατηθεί από το ποντίκι. Αυτό μπορεί να είναι χρήσιμο σε θέσεις όπως εργαλειοθήκες, έτσι ώστε η εστίαση του πληκτρολογίου να μην αφαιρεθεί από την κύρια περιοχή της εφαρμογής.
Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:
GtkButton
GtkWindow