Εισαγωγή - Δημιουργία παραθύρου

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

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

Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό clepto » 15 Φεβ 2013, 21:19

Καλησπέρα, αυτή είναι η πρώτη από μια σειρά δημοσιεύσεων σχετικά με τον προγραμματισμό και την δημιουργία γραφικών περιβαλλόντων χρησιμοποιώντας την βιβλιοθήκη GTK. Η γλώσσα που θα χρησιμοποιήσουμε είναι η Python γιατί είναι εύκολη, καθαρή και έχουμε και σχετικό νήμα εδώ στο forum για την συγκεκριμένη γλώσσα...

Λοιπόν, ας δούμε καταρχάς τι χρειαζόμαστε:
1) Τον επεξεργαστή κειμένου της επιλογής μας
2) Να γνωρίζουμε τα στοιχειώδες από την Python
3) Να έχουμε εγκατεστημένα τα πακέτα python3, python3-gi

Η δομή των δημοσιεύσεων θα είναι η εξής:
θα αναλύουμε μια μια τις σειρές που χρειάζονται ανάλυση και στο τέλος θα έχουμε όλο τον κώδικα μαζεμένο.

Ας αρχίσουμε λοιπόν με το πιο βασικό, την δημιουργία ενός παραθύρου.


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

from gi.repository import Gtk


Για να χρησιμοποιήσουμε το πακέτο Gtk χρειάζεται να το κάνουμε import, το πακέτο βρίσκεται στο
gi.repository.

Μορφοποιημένος Κώδικας: Επιλογή όλων
window = Gtk.Window ()


Δημιουργούμε το παράθυρο.

Μορφοποιημένος Κώδικας: Επιλογή όλων
window.connect ("delete-event", Gtk.main_quit)


Κάθε αντικείμενο (widget) όταν δημιουργούμε ένα γραφικό περιβάλλον έχει κάποια σήματα (signals) τα οποία ενεργοποιούνται όταν γίνεται κάποια συγκεκριμένη ενέργεια και έτσι μπορούμε να καθορίσουμε τι θα συμβεί στο πρόγραμμα μας.
Εδώ για παράδειγμα συνδέουμε το σήμα “delete-event” με την συνάρτηση Gtk.main_quit που ουσιαστικά κλείνει το πρόγραμμα. Το σήμα “delete-event” ενεργοποιείται όταν πατάμε να κλείσουμε το παράθυρο ή Alt-F4 ή γενικά όταν κλείνουμε την εφαρμογή.

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


Για να εμφανιστεί το παράθυρο και γενικά κάθε αντικειμένο που έχουμε δημιουργήσει χρειάζεται να το εμφανίσουμε. Αυτή είναι η δουλειά της συνάρτησης show (), δηλαδή να κάνει ορατό το αντικείμενο που την καλεί. Δεν χρειάζεται να καλείτε την show για κάθε αντικείμενο που δημιουργείτε, αρκεί να καλέσετε την show στο κύριο παράθυρο ή στο container που έχει βάλει το αντικείμενο (θα μιλήσουμε παρακάτω για τα containers).

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


Ξεκινάει την Gtk και εμφανίζει το παράθυρο που μόλις φτιάξαμε.

Τώρα αποθηκεύστε το αρχείο με κατάληξη .py και για να τρέξετε το πρόγραμμα δώστε την εντολή
python3 τοποθεσία-του-προγράμματος

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

from gi.repository import Gtk

window = Gtk.Window ()
window.connect ("delete-event", Gtk.main_quit)
window.show_all ()

Gtk.main ()


Αυτά για την εισαγωγή, ότι απορία έχετε στα σχόλια
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: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό asvos » 20 Φεβ 2013, 01:59

Καλά ξεκίνησε.
ότι απορία έχετε στα σχόλια

Που ακριβώς δηλαδή? :?
Spoiler: show
Γνώσεις ⇛ Linux: Λίγες ┃ Προγραμματισμός: Λίγες ┃ Αγγλικά: Μέτρια.
NetBook
Linux Lite σε Netbook Aser Aspireone.

Desktop
Ubuntu 19.04
Intel Core i7 CPU 920 2.67GHz ‖ RAM 11,7 GiB ‖ Gigabyte EX58-UD3R
nVidia GK107 [GeForce GT 630] {}
eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller)
Άβαταρ μέλους
asvos
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 388
Εγγραφή: 28 Φεβ 2010, 18:34
Εκτύπωση

Re: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό simosx » 20 Φεβ 2013, 14:11

Off topic:
asvos έγραψε:Καλά ξεκίνησε.
ότι απορία έχετε στα σχόλια

Που ακριβώς δηλαδή? :?


Εδώ, όπως ακριβώς έκανες με το παραπάνω μήνυμα,
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό clepto » 20 Φεβ 2013, 17:46

@Asvos ακριβώς εδώ!

Σήμερα θα ανεβεί και το δεύτερο μάθημα ;)
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: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό M.Jackson » 27 Δεκ 2013, 22:30

Προτείνω να συγχωνευτεί με Pygame. :)
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό clepto » 29 Δεκ 2013, 03:13

Δεν έχει σχέση το Pygame με την PyGtk..
Το είναι για παιχνίδια, το άλλο για γραφικό περιβάλλον
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: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό M.Jackson » 29 Δεκ 2013, 17:01

Ναι αλλά ουσιαστικά, το pygame είναι μια βιβλιοθήκη για δημιουργία γραφικού περιβάλλοντος, με αρκετές επιλογές που το κάνουν και κατάλληλο για παιχνίδια.
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Εισαγωγή - Δημιουργία παραθύρου

Δημοσίευσηαπό xmarkx » 21 Αύγ 2014, 02:16

Γεια! Δεν ξέρω αν αναφέρεται κάπου δεν τα διάβασα όλα αλλά υπάρχει κάποιο IDE που θα μου δώσει την δυνατότητα να χρησιμοποιώ drag and drop Οπως στο netbeans στην αντίστοιχη Java γλώσσα; :/
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-35-generic 64bit (en_US.UTF-8, X-Cinnamon cinnamon), Ubuntu 3.13.0-34-generic, Windows 7
3 Intel Core i5-4670K CPU @ 3.40GHz ‖ RAM 7923 MiB ‖ ASUS Z87-A - ASUS All Series
4 Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde XT [Radeon HD 7770/8760 / R7 250X] [1002:683d] {fglrx_pci}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 11)
Άβαταρ μέλους
xmarkx
babeTUX
babeTUX
 
Δημοσιεύσεις: 96
Εγγραφή: 19 Αύγ 2014, 17:31
Εκτύπωση


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

cron