Programmare in pygobject
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.
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.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
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)
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
- brg
- Linux 3.x
- Messaggi: 580
- Iscritto il: sab 12 mar 2011, 14:20
- Slackware: 15.0
- Kernel: 5.15.117
- Desktop: KDE5
- Località: Montecatini
- Contatta:
Re: Programmare in pygtk
Non sono un programmatore Python, quindi prendi quel che scrivo al riguardo cum grano salis:
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).
Tanta. C'erano differenze importanti anche tra sottoversioni di Python, tipo tra la 2.2, la 2.4 e la 2.6.ZeroUno ha scritto:Quanta incompatibilità c'è tra i due?
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).
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
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.
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
- lablinux
- Linux 4.x
- Messaggi: 1212
- Iscritto il: gio 27 nov 2008, 12:23
- Desktop: Gnome
- Distribuzione: Debian testing
- Località: Rho
Re: Programmare in pygtk
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-t ... or-2017-2/ [/edit]
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-t ... or-2017-2/ [/edit]
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
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.
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
- lablinux
- Linux 4.x
- Messaggi: 1212
- Iscritto il: gio 27 nov 2008, 12:23
- Desktop: Gnome
- Distribuzione: Debian testing
- Località: Rho
Re: Programmare in pygtk
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.
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.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
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.
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)
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
...
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
- lablinux
- Linux 4.x
- Messaggi: 1212
- Iscritto il: gio 27 nov 2008, 12:23
- Desktop: Gnome
- Distribuzione: Debian testing
- Località: Rho
Re: Programmare in pygtk
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.
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.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
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.
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
- lablinux
- Linux 4.x
- Messaggi: 1212
- Iscritto il: gio 27 nov 2008, 12:23
- Desktop: Gnome
- Distribuzione: Debian testing
- Località: Rho
Re: Programmare in pygtk
ah, ok (concordo la slackware stable è vecchia)
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
(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.
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
- lablinux
- Linux 4.x
- Messaggi: 1212
- Iscritto il: gio 27 nov 2008, 12:23
- Desktop: Gnome
- Distribuzione: Debian testing
- Località: Rho
Re: Programmare in pygtk
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.
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.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
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.
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
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 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
mi sto scontrando con questo:
http://python-gtk-3-tutorial.readthedoc ... t.html#id5
ridotto all'osso la parte che non mi funziona è questa:
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
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)
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
- lablinux
- Linux 4.x
- Messaggi: 1212
- Iscritto il: gio 27 nov 2008, 12:23
- Desktop: Gnome
- Distribuzione: Debian testing
- Località: Rho
Re: Programmare in pygtk
Codice: Seleziona tutto
dir(oggetto)
Codice: Seleziona tutto
dir(button)
Codice: Seleziona tutto
print button.__doc__