Τα πάντα για Python GTK+ 3

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

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

Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό sokoban4ever » 10 Φεβ 2012, 04:39

Εδώ θα βάζουμε όλα τα σχετικά με Python και GTK+ 3
Για documentation στο http://python-gtk-3-tutorial.readthedocs.org/en/latest/
και πληροφορίες εδώ https://live.gnome.org/PyGObject

Πρώτα εγκαθιστάμε τα απαραίτητα από τα αποθετήρια
Κάνουμε
Κώδικας: Επιλογή όλων
sudo apt-get install libgtk-3-0 python-gobject gobject-introspection


Παρακάτω παρουσιάζω ένα παράδειγμα πως χρησιμοποιούμε το Gtk.TreeView
με TreeModel το Gtk.ListStore και
Cell renderer το Gtk.CellRendererText
όπου τοποθετεί τα κρυφά αρχεία του HOME καταλόγου στο TreeView.
Documentation για αυτό εδώ http://python-gtk-3-tutorial.readthedoc ... eview.html

Το Gtk.TreeView το συνδέουμε με κάποιο TreeModel (Model) είτε Gtk.ListStore είτε με Gtk.TreeStore.
έπειτα θέλωντας να εμφανίσουμε τα δεδομένα (View) υπάρχουν οι Cell renderers
όπως ( Gtk.CellRendererText, Gtk.CellRendererPixbuf και Gtk.CellRendererToggle )

Εικόνα

και ο κώδικας
Κώδικας: Επιλογή όλων
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
import commands



def hiddenFFS():
res = []
HiddenFiles=[]
HiddenFiles = commands.getoutput('cd $HOME/ && ls -larh | egrep "^-" | egrep " \.\S*" ')
if len(HiddenFiles) == 0:
return []
HiddenFiles = HiddenFiles.split('\n')
for hidden in HiddenFiles:
tmp = hidden.split(' ')
while tmp.count(''):
tmp.remove('')
res.append(tmp)

return res



class TreeViewExample(Gtk.Window):

def __init__(self):
Gtk.Window.__init__(self)
self.set_title('Kρυφά αρχεία '+ '/home/' + commands.getoutput('whoami'));


HiddenFiles = hiddenFFS()

if HiddenFiles != []:
store = Gtk.ListStore(str,str,str,str,str,str,str,str)
for hidden in HiddenFiles:
store.append(hidden)

Tree = Gtk.TreeView(store)
renderer = Gtk.CellRendererText()


NamesOfColumns = ['Rights','Contains','Owner','Group','Size','Date','Time','Name']
for i,columnName in enumerate(NamesOfColumns):
Tree.append_column(Gtk.TreeViewColumn(columnName, renderer, text = i ))
else:

store = Gtk.ListStore(str)
store.append(['No hidden Files Found under HOME Directory'])
Tree = Gtk.TreeView(store)
renderer = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("Nothing To Show here", renderer, text=0)
Tree.append_column(column)

self.add(Tree)



if __name__ == '__main__':
win = TreeViewExample()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()


Περιμένω παράδειγμα με Gtk.TreeStore ως TreeModel του Gtk.TreeView :)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό pmav99 » 10 Φεβ 2012, 22:29

αν και νομίζω ότι δεν ειναι για gtk3
http://sv1jsb.blogspot.com/search/label/gtk
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό medigeek » 10 Φεβ 2012, 23:53

Πολύ ωραίο το readthedocs, ευχαριστώ!!
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό medigeek » 11 Φεβ 2012, 13:49

Gtk3 ubuntu-gr forum signature: https://github.com/medigeek/ubuntu-gr_forum_signature (φάκελος future)
Gtk2 to Gtk3 patch: http://pastebin.com/dmeR8RrD

Διαδικασία μετατροπής με τα σφάλματα που πήρα:
1.
Κώδικας: Επιλογή όλων
from gi.repository import Gtk as gtk

..και αργότερα αφαίρεσα το κομμάτι "as gtk". Replace all: "gtk." -> "Gtk."

Αργότερα χρειάστηκα και το Gdk:
Κώδικας: Επιλογή όλων
from gi.repository import Gtk,Gdk


2.
gi._glib.GError: Invalid object type `GtkComboBoxEntry'

Στο αρχείο .glade το "GtkComboBoxEntry" έπρεπε να γίνει "GtkComboBoxText"
Επίσης θέλει ένα xml property:
Κώδικας: Επιλογή όλων
<property name="has-entry">True</property>

(Μπορείτε να το θέσετε από το glade πρόγραμμα.)

3.
Ακολούθως το ανοίγετε με το πρόγραμμα glade. Τα περισσότερα τα αναλαμβάνει το glade.
* Στο File > Properties επιλέγετε "Gtk 3"
* Τα "GtkVBox" γίνονται "GtkBox". Χρειάζονται property για να γίνουν vertical. (Μπορείτε να το θέσετε από το glade πρόγραμμα.)
Κώδικας: Επιλογή όλων
<property name="orientation">vertical</property>


4.
AttributeError: 'gi.repository.Gtk' object has no attribute 'RESPONSE_CANCEL'
Fix: Το "gtk.RESPONSE_CANCEL" (gtk.RESPONSE_*) το αντικατέστησα με "gtk.ResponseType.CANCEL"
http://python-gtk-3-tutorial.readthedoc ... add_button

5.
AttributeError: 'ComboBoxText' object has no attribute 'set_text_column'
Fix: το αντικατέστησα με set_entry_text_column()

5.
To liststore δεν δουλεύει πλέον.
Πρόσθεσα μέσω του κώδικα το liststorecombo1 model:
Κώδικας: Επιλογή όλων
self.liststore = self.builder.get_object("liststorecombo1")
self.comboboxlinux = self.builder.get_object("comboboxtext1")
self.comboboxlinux.set_model(self.liststore)
self.comboboxprogramming = self.builder.get_object("comboboxtext2")
self.comboboxprogramming.set_model(self.liststore)
self.comboboxenglish = self.builder.get_object("comboboxtext3")
self.comboboxenglish.set_model(self.liststore)


6.
TypeError: get_text() takes exactly 4 arguments (3 given)
Fix: Το αντικατέστησα με
Κώδικας: Επιλογή όλων
(start, end) = self.textboxbuf.get_bounds()
self.textboxbuf.get_text(start, end, include_hidden_chars=False)


7.
AttributeError: 'gi.repository.Gtk' object has no attribute 'clipboard_get'
Fix:
Κώδικας: Επιλογή όλων
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.set_text(text, -1)
clipboard.store()


8.
AttributeError: 'Statusbar' object has no attribute 'remove_message'
Fix:
Κώδικας: Επιλογή όλων
self.statusbar.remove(self.statusbarcid, msgid)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό sokoban4ever » 24 Φεβ 2012, 01:16

Ωραίος :D
Αυτά τα 8 βήματα είναι ενδεικτικά για την μετατροπή από gtk2 σε gtk3;
Πιστεύεις ότι γίνεται να αυτοματοποιηθεί για όλα τα gtk2 projects ως ένα βαθμό
και αν ναι έως ποιο βαθμό;

Υ.Σ
για Gtk.TreeStore τίποτα; :)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό medigeek » 24 Φεβ 2012, 02:37

Απλά είπα να αναφέρω τα errors που είχα αντιμετωπίσει, ίσως το google βοηθήσει κάποιον. :)
Δεν είναι μόνο αυτά τα 8 βήματα, δυστυχώς υπάρχουν πολλά άλλα πράγματα που μπορεί να αλλαξαν - η αυτοματοποίηση αποκλείεται, αλλά ίσως μπορεί να φτιαχθεί κάποιο εργαλείο/πρόγραμμα gtk2to3. :P

sokoban4ever έγραψε:για Gtk.TreeStore τίποτα; :)

Δεν το χρησιμοποιώ. :P Μπορεί να χρειαστώ το treeview εν τω μεταξύ, θα το κοιτάξω. :D
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό sokoban4ever » 24 Φεβ 2012, 19:18

A κατάλαβα δυστυχώς πρέπει να είναι όπως το φανταζόμουν
gtk2 to gtk 3 μόνο ενδεικτικά :(

Από ότι εχω καταλάβει (ως την στιγμή που γράφω )
στο gtk3 η απεικόνιση ιεραρχικών δεδομένων, δέντρων , φακέλων κλπ
δεν λέγεται απλά treeview
αλλά
treeview με TreeModel το Treestore (και κάποιο renderer)
αλλιώς αν είναι απλά μια λίστα ή πίνακας τότε λέγεται
treeview με TreeModel το ListStore (και κάποιο renderer)
Φιλικά :)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό clepto » 23 Απρ 2012, 20:13

να ρωτήσω κάτι που έχει σχέση γενικά με gtk;
αυτά τα κουμπιά πάνω που λένε overview tweaks και λοιπα τι widget ειναι;
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: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό simosx » 23 Απρ 2012, 20:26

clepto έγραψε:να ρωτήσω κάτι που έχει σχέση γενικά με gtk;
αυτά τα κουμπιά πάνω που λένε overview tweaks και λοιπα τι widget ειναι;


Ο κώδικας είναι στο http://bazaar.launchpad.net/~tualatrix/ ... ces.py#L39
και στο
http://bazaar.launchpad.net/~tualatrix/ ... ces.ui#L81
προσωπικό ιστολόγιο ϗ πλανήτης 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: Τα πάντα για Python GTK+ 3

Δημοσίευσηαπό clepto » 28 Απρ 2012, 14:15

υπάρχει κάποιος τρόπος να ορίσω σταθερό μέγεθος σε ένα vbox/hbox;
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
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι