Programmare in pygobject

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Programmare in pygobject

Messaggioda ZeroUno » dom ott 01, 2017 14:22

Premesse:
1) di natura sono un sistemista e non un programmatore, tuttavia programmazione l'ho studiata e la uso, ma principalmente in bash e php
2) non mi piace python
3) non so programmare in python; ho solo fatto qualcosa di base; molte sintassi la devo ancora imparare

detto questo riconosco che è arrivato il momento di colmare questa lacuna, ma non mi voglio annoiare con l'abc. La programmazione già la conosco, la sintassi la imparo strada facendo.

Ho un programma scritto in bash che pecca di mancanza di grafica. Ho provato con kdialog (che è incluso in slackware) con risultati a malapena sufficienti; qualcosa in più ho ottenuto con altri simili ma non inclusi in slackware (e la cosa è mandatoria).

So che con pygtk - che è incluso in slackware - si fanno tante cosine carine, così vorrei cogliere l'occasione per imparare questo linguaggio di programmazione.

Come cominciare in pygtk?

Intanto ho notato che da pochissimo in current è stato introdotto python3 ma lasciando anche python2.

Molti tutorial in giro sono basati su python3, ma il mio script almeno per un po' deve girare sia su current che su slackware14.2, quindi python2 è una scelta obbligatoria.

Quanta incompatibilità c'è tra i due?
Da quelle poche righe di codice che ho scritto la 'print' è altamente cambiata e la sintassi non è totalmente retrocompatibile.



Un altro motivo per imparare il python è che mio fratello - che sta iniziando a programmare ora - ha deciso di iniziare con python e ovviamente mi capita di dargli una mano a livello di programmazione in generale (che implica vedere il codice che scrive).
Lui usa python3 e una volta che ho fatto uno script in python2 ho dovuto usare la 'import from future' (mitico :) ) della funzione 'print' per ottenere lo stesso output (pochi giorni prima che è uscito python3 su slackware current)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
brg
Linux 2.4
Linux 2.4
Messaggi: 413
Iscritto il: sab mar 12, 2011 14:20
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE4
Località: Montecatini
Contatta:

Re: Programmare in pygtk

Messaggioda brg » dom ott 01, 2017 15:09

Non sono un programmatore Python, quindi prendi quel che scrivo al riguardo cum grano salis:

ZeroUno ha scritto:Quanta incompatibilità c'è tra i due?


Tanta. C'erano differenze importanti anche tra sottoversioni di Python, tipo tra la 2.2, la 2.4 e la 2.6.

Detto ciò, esistono alternative come PHP-GTK, che però non è disponibile né in Slackware né su Slackbuilds, Perl-Qt, disponibile in Slackware, nonché l'immarcescibile Tcl/Tk, disponibile in Slackware. Io personalmente uso Perl-Tk, disponibile su Slackbuilds, perché è estremamente portabile: è un modulo da 800kB che dipende da perl e Tk, che sono praticamente sempre presenti, anche sui sistemi più minimali e su Windows con Strawberry Perl. Per il BASH il più usato è Zenity che è l'interfaccia predefinita di winetricks (un programmino per installare librerie sotto wine).

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggioda ZeroUno » dom ott 01, 2017 15:23

Ho usato zenity come alternativa a kdialog ottenendo risultati migliori ma non adatti allo scopo.
Ho anche pensato di usare grafica in perl, ma tutte le soluzioni necessitano l'installazione di altri moduli non già presenti in slackware, condizione questa mandatoria.
In aggiunta l'aggiunta di una gui a questo programma in bash non è strettamente mandatorio ma più che altro un pretesto per imparare il python che per tanto ho snobbato.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 3.x
Linux 3.x
Messaggi: 1041
Iscritto il: gio nov 27, 2008 12:23
Slackware: 14 64bit
Desktop: kde4
Località: Rho
Contatta:

Re: Programmare in pygtk

Messaggioda lablinux » lun ott 02, 2017 11:52

usa python3, il 2 ormai è in dismissione (almeno un 5/6 anni). Sono poche le librerie non compatibile con python3
Installalo da slackbuild. Per la parte grafica non posso aiutarti, l'ho usato per eseguire programmi batch o come applicativi web (django).
[edit] PS pygtk è fermo al 2011, se devi fare qualcosa di nuovo, forse ti conviene puntare su altro, dai un'occhiata a http://insights.dice.com/2017/08/07/7-top-python-gui-frameworks-for-2017-2/ [/edit]

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggioda ZeroUno » lun ott 02, 2017 12:50

E' mandatorio che funzioni con quanto è preinstallato in slackware.

Meglio se in slackware 14.2 anche, ma visto che python3 è stato inserito solo in current devo pensarci se rompere o meno la compatibilità con la stabile.
E' anche possibile che per quando avrò terminato sarà uscita la slackware 14.3 (o 15 che sia) ma per ora devo imparare. Quando ci avrò capito qualcosa di più potrò decidere meglio.

Di quelli linkati mi sembra che solo PyObject sia presente in slackware, sia per python2 che 3 preinstallato. In effetti noto che pygtk3 (se esiste) non è stato inserito in current.

Per quelle poche cose che ho fatto finora in pygtk sembra che sia abbastanza semplice.

Ho provato ad avviare un programma scritto per python2 con python3 per prova. Al di là del fallimento per librerie incompatibili, il primo fallimento è stato sugli spazi!!! Lo script metteva su alcune righe i tab e su altre gli spazi. Già non mi piace la rigidità della spaziatura... python3 è ancora più rigido! Io per sicurezza uso solo spazi quando programmo.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 3.x
Linux 3.x
Messaggi: 1041
Iscritto il: gio nov 27, 2008 12:23
Slackware: 14 64bit
Desktop: kde4
Località: Rho
Contatta:

Re: Programmare in pygtk

Messaggioda lablinux » lun ott 02, 2017 13:47

quella che tu 'disprezzi' io apprezzo tantissimo, perché risulta un codice ben indentato che migliora la leggibilità.
Io uso sempre gli spazi i tab, a volte non campaiono o sono diversamente interpretati. Configuro gli editor per sostituire i tab con 4 spazi.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggioda ZeroUno » lun ott 02, 2017 14:12

In verità anche un codice scritto in un qualsiasi altro linguaggio di programmazione può essere ben indentato, ma l'indentazione la decido e - soprattutto - un ciclo o una if mi termina con un endif o una graffa chiusa o qualcosa che mi indica una fine e non un semplice cambio di indentazione che può introdurre in errore.
Inoltre l'indentazione che faccio io non è solo strutturale (if() { }) ma anche logica.

Codice: Seleziona tutto

inizializzazione variabile A
    inizializzazione variabile A1
    inizializzazione variabile A2
inizializzazione variabile B
    ...


Anche a me non piacciono i tab e soprattutto 8 sono troppi; io a seconda dei casi configuro gli editor con tab da soli 2 spazi e altre volte 4, e dentro lo stesso codice a seconda di quello che fa il codice a volte indento di più. Ma molti li amano tanto i tab.

Ma quì entriamo in filosofia e conseguenti flame.

Indentazione a parte (che è solo una cosa estetica alla fine e marginale ai fini funzionali) è presto per dire se questo linguaggio mi piacerà sotto gli altri aspetti o meno.

nota.
Mi sono appena accorto che la slackware da cui sto scrivendo oggi (non ieri) è quella che ancora non ho aggiornato e quindi non ha python3.
Tuttavia ha PyObject3 che - a questo punto - si chiama così non per la relazione a python3 ma piuttosto per la relazione a gtk3.

Non aggiorno ora perchè a casa ho avuto un problema con l'integrazione libreoffice<->kde e voglio assicurarmi prima che non sia dipeso dall'aggiornamento (ed evitare quindi lo stesso problema sul pc del lavoro)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 3.x
Linux 3.x
Messaggi: 1041
Iscritto il: gio nov 27, 2008 12:23
Slackware: 14 64bit
Desktop: kde4
Località: Rho
Contatta:

Re: Programmare in pygtk

Messaggioda lablinux » lun ott 02, 2017 14:27

scusa ma non hai la 14.2?
Hai provato ruby? Molti si innamorano di questo linguaggio.

PS ho trovato """programmi""" (php) scritti un po con tab e un po con spazi e un po non indentati (oltre ad essere scritti con il biiip) e quando lo script è lungo hai voglia a ritrovartici.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggioda ZeroUno » lun ott 02, 2017 15:02

14.2 non ha python 3.
No, ho la current. A casa aggiornata a ieri, al lavoro aggiornata a 10gg fa. Su quella al lavoro ho anche kde5.
Ovviamente sulla workstation. Sui server non si mette la current, ma nel mio caso neanche la stable ma redhat.
Slackware 14.2 ormai è vecchia.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 3.x
Linux 3.x
Messaggi: 1041
Iscritto il: gio nov 27, 2008 12:23
Slackware: 14 64bit
Desktop: kde4
Località: Rho
Contatta:

Re: Programmare in pygtk

Messaggioda lablinux » lun ott 02, 2017 15:27

ah, ok (concordo la slackware stable è vecchia)

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggioda ZeroUno » lun ott 02, 2017 18:14

(quasi) nessun problema a leggere documentazione in inglese, ma c'è qualche buon tutorial/documentazione in italiano per PyGObject?
Vedo che su slackware c'è anche PyQt4, ma in fase di transizione da kde4 a kde5 (chissà quando lo metterà nella slackware ufficiale) meglio aspettare.. una cosa per volta.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 3.x
Linux 3.x
Messaggi: 1041
Iscritto il: gio nov 27, 2008 12:23
Slackware: 14 64bit
Desktop: kde4
Località: Rho
Contatta:

Re: Programmare in pygtk

Messaggioda lablinux » mar ott 03, 2017 8:38

scusa ma non ho capito, devi creare qualcosa che giri in produzione su Redhat o ti stai 'divertendo' per fare qualcosa di grafico?

PS con python puoi crearti un ambiente virtuale (https://virtualenv.pypa.io/en/stable/) dove puoi fare tutte le prove che vuoi e poi butti tutto. Ad esempio ti installi tramite pip, dentro il tuo ambiente, le librerie python che ti servono, ci giochi e poi decidi.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggioda ZeroUno » mar ott 03, 2017 8:57

I server di produzione non si toccano. E nemmeno quelli di sviluppo. Sono sistemista, non programmatore, al massimo può capitare troubleshooting.

Gira sulla mia workstation di lavoro e di casa, e potenzialmente su quello di altri.

Mi sto "divertendo" in verità si traduce con "è ora di imparare il python" per colmare questa lacuna, e per farlo traduco il programma scritto in bash basato su dialog in uno scritto in python basato su gtk.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5050
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggioda ZeroUno » mer ott 04, 2017 0:18

mi sto scontrando con questo:
http://python-gtk-3-tutorial.readthedoc ... t.html#id5
ridotto all'osso la parte che non mi funziona è questa:

Codice: Seleziona tutto

        color = Gdk.color_parse('blue')
        rgba = Gdk.RGBA.from_color(color)
        area = Gtk.DrawingArea()
        area.set_size_request(24, 24)
        area.override_background_color(0, rgba)
        button.add(area)

dovrebbe disegnare un bottone blu, ma rimane il colore di default, mentre sullo screenshot del tutorial viene colorato.

Le impostazioni di 'area' le prende perchè se cambio quei 24 la differenza si vede. Quello che non prende è l'override_backgroud_color.
Dov'è l'intoppo?

se do una print di rgba mi da
Gdk.RGBA(red=0.000000, green=0.000000, blue=1.000000, alpha=1.000000)
quindi sembra ok. Ma non ho trovato documentazione su override_background_color e soprattutto come vedere gli attributi di area e button
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 3.x
Linux 3.x
Messaggi: 1041
Iscritto il: gio nov 27, 2008 12:23
Slackware: 14 64bit
Desktop: kde4
Località: Rho
Contatta:

Re: Programmare in pygtk

Messaggioda lablinux » mer ott 04, 2017 8:28

Codice: Seleziona tutto

dir(oggetto)

nel tuo caso, prova con

Codice: Seleziona tutto

dir(button)
e con

Codice: Seleziona tutto

print button.__doc__