Labels και Buttons

...ασύγχρονα μαθήματα γλώσσας PyGtk

Συντονιστής: the_eye

Labels και Buttons

Δημοσίευσηαπό clepto » 22 Φεβ 2013, 00:14

Αυτό είναι το δεύτερο μάθημα για την βιβλιοθήκη Gtk και θα ασχοληθούμε με τις ταμπέλες (labels) και τα κουμπιά (buttons). Αυτά τα δύο αποτελούν τα αντικείμενα που θα χρησιμοποιείσετε πιο πολύ.
Και στα δύο παραδείγματα θα δημιουργήσουμε μια δικιά μας κλάση βασισμένη στην κλάση Gtk.Window και θα προσθέσουμε σε αυτή ότι θέλουμε.

Αρχίζουμε με τις labels,

Μορφοποιημένος Κώδικας: Επιλογή όλων
#!/usr/bin/python3

from gi.repository import Gtk

class MyWindow (Gtk.Window):
def __init__ (self):
Gtk.Window.__init__ (self, title="My Window")

self.label = Gtk.Label ("This is a label")
self.add (self.label)


Ονομάζουμε την κλάση μας MyWindow και την ορίζουμε ως υπο-κλάση της Gtk.Window. Στον constructor της δικιάς μας κλάσης πρέπει να καλέσουμε τον constructor της Gtk.Window και πιο συγκεκριμένα του λέμε να θέσει τον τίτλο του παραθύρου σε “My Window”.

Συνεχίζουμε δημιουργώντας μια label. Όι labels δέχονται ως παράμετρο το περίεχομενο τους, δηλαδή τι θα γράφουν σε αυτές. Τέλος προσθέτουμε την label που δημιουργήσαμε στο παράθυρο μας με την εντολή:

Μορφοποιημένος Κώδικας: Επιλογή όλων
self.add (self.label)


Τον υπόλοιπο κώδικα τον έχουμε ξαναδεί στο προηγούμενο μάθημα με την διαφορά ότι έχω προσθέσει την γραμμή:

Μορφοποιημένος Κώδικας: Επιλογή όλων
win.set_default_size (100, 100)


ώστε να ορίσει το μέγεθος του παραθύρου σε 100x100 (pixels αν δεν κάνω λάθος)

Ολόκληρος ο κώδικας:

Μορφοποιημένος Κώδικας: Επιλογή όλων
#!/usr/bin/python3

from gi.repository import Gtk

class MyWindow (Gtk.Window):
def __init__ (self):
Gtk.Window.__init__ (self, title="My Window")

self.label = Gtk.Label ("This is a label")
self.add (self.label)

win = MyWindow ()
win.set_default_size (100, 100)
win.connect ('delete-event', Gtk.main_quit)
win.show_all ()

Gtk.main ()



Σειρά έχουν τα κουμπιά!
Ο κώδικας για τα κουμπιά είναι σχεδόν ο ίδιος για αυτό θα τον δώσω τώρα και θα εξηγήσω τις αλλαγές.

Μορφοποιημένος Κώδικας: Επιλογή όλων
#!/usr/bin/python3

from gi.repository import Gtk

class MyWindow (Gtk.Window):
def __init__ (self):
Gtk.Window.__init__ (self, title="My Window")

self.button = Gtk.Button ("This is a button")
self.button.connect ('clicked', self.on_clicked)
self.add (self.button)

def on_clicked (self, widget):
print ("Button has been clicked!")

win = MyWindow ()
win.set_default_size (100, 100)
win.connect ('delete-event', Gtk.main_quit)
win.show_all ()

Gtk.main ()


Όπως βλέπετε τα μόνα που αλλάζουν είναι ότι χρησιμοποιούμε την γραμμή

Μορφοποιημένος Κώδικας: Επιλογή όλων
self.button = Gtk.Button ("This is a button")


για να δημιουργήσουμε ένα κουμπί. Τα κουμπιά μπορούν να δεχτούν ως παραμέτρους την ταμπέλα που θα έχουν, το εικονίδιο και το αν θα χρησιμοποιήσουν underline (το underline είναι το αν θα υπογραμμιστεί κάποιο γράμμα στην ετικέτα για να δείξει ποιο πλήκτρο αποτελεί συντόμευση για το συγκεκριμένο κουμπί).

Στην συνέχεια συνδέσουμε το signal 'clicked' με την συνάρτηση on_clicked. Το signal 'clicked' ενεργοποιείται όταν κάποιος πατάει το κουμπί.
Στην συγκεκριμένη περίπτωση η on_clicked απλά γράφει στην έξοδο "Button has been clicked!".

Αυτά για το δεύτερο μάθημα...
Στο επόμενο μάθημα θα μιλήσουμε για τα containers (Gtk.Box, Gtk.Grid) που σου δίνουν την δυνατότητα να έχεις πολλά αντικείμενα σε ένα παράθυρο με την σειρά που τα θες..
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Labels και Buttons

Δημοσίευσηαπό clepto » 16 Ιουν 2013, 23:44

Για όσους ενδιαφέρονται σύντομα θα ανεβεί το επόμενο μέρος, συγγνώμη για την καθυστέρηση!
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Labels και Buttons

Δημοσίευσηαπό AyanPrince » 17 Απρ 2015, 13:40

Τα κουμπιά μπορούν να δεχτούν ως παραμέτρους την ταμπέλα που θα έχουν, το εικονίδιο και το αν θα χρησιμοποιήσουν underline
Arslan1
AyanPrince
babeTUX
babeTUX
 
Δημοσιεύσεις: 1
Εγγραφή: 17 Απρ 2015, 13:38
Εκτύπωση


Επιστροφή στο Μαθήματα PyGtk