Autore Topic: [RISOLTO] Input nel terminale  (Letto 1767 volte)

Offline yuri.f_87

  • Gamberetto
  • *
  • Post: 5
    • Mostra profilo
[RISOLTO] Input nel terminale
« il: 15 Novembre 2010, 22:58:44 »
Buona sera a tutti.. Questa è la mia primissima discussione quindi vi chiedo scusa in anticipo per i miei errori!  ;D

Io ho creato il mio primo "programmino" unendo Gambas con Python.

Il programmino aggiorna Ubuntu e lo ripulisce da vecchie librerie (so che potevo usare Bash ma voglio imparare ad usare Python).

Il programma in Python è questo (upclean.py):
Codice: [Seleziona]
import os
fine=0
while fine==0:
update=0
clean=0
scelta=0
while scelta<1 or scelta>3:
scelta=int(input("Vuoi\n1 - Aggiornare\n2 - Pulire\n3 - Tutto\n"))
if scelta<1 or scelta>3:
print("Valore inserito non valido!")
if scelta==1:
update=1
elif scelta==2:
clean=1
elif scelta==3:
update=1
clean=1
if update==1:
print("Avvio aggiornamento...")
os.system('sudo apt-get update && sudo apt-get upgrade')
print("Aggiornamento andato a buon fine!")
if clean==1:
print("Avvio pulizia...")
os.system('sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove')
print("Pulizia andata a buon fine!")
fine=int(input("Vuoi fare altro?\n0 sì\n1 no\n"))
print("Ciao ciao. Alla prossima.")

L'interfaccia grafica l'ho creata in Gambas perchè.... perchè mi piace!!  ;D
Il programmino è questo:
Codice: [Seleziona]
PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()

END

PUBLIC SUB Button1_Click()
  SHELL "cd && gksu python3.1 upclean.py" WAIT
  Message.Info("Processo eseguito!", "Fine processo")
END

PUBLIC SUB Button2_Click()

  Message.Info("Ciao ciao!", "Exit")
  FMain.Close()

END

Il problema è questo: quando avvio il programma in Python mi chiede di effettuare la scelta ma dalla console di Gambas non posso fare input.
Come posso fare?
Grazie mille in anticipo a tutti!!
Yuri.
« Ultima modifica: 17 Novembre 2010, 07:31:33 da yuri.f_87 »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Input nel terminale
« Risposta #1 il: 16 Novembre 2010, 00:37:34 »
Posso permettermi di dirti una cosa? Stai  sbagliando approccio.....gambas è un linguaggio di programmazione e come tale deve essere trattato. Gambas non è glade e non si usa per creare interfacce grafiche. In questo modo costringi chi userà il tuo software a scaricare una mole di pacchetti che effettivamente non serve. Scaricati qualche guida su pygtk o pyqt e studia quelle perchè così stai solo perdendo del tempo "scolastico" prezioso. Gambas è un linguaggio e a noi piace trattarlo così...

Nel tuo codice in python non c'è nulla che gambas non possa fare e in realtà il codice gambas che usi si limita a due righe contate....questo non è sicuramente rispettoso nei confronti di chi offre assistenza a questo linguaggio e non agli oggetti che esso offre....
Per noi un button è solo un button e inizia ad essere interessante quando scatena un evento alla sua pressione...il resto è irrilevante....

Queste sono mie impressioni ed opinioni (ho usato il noi per rendere le idee) e non volermene per questo ma vedere "uccidere" la nostra passione in questo modo ogni santo giorno alla lunga porta a dei pensieri...

Spero che qualcuno ti aiuti....

Alla prossima... ;)
« Ultima modifica: 16 Novembre 2010, 00:40:48 da Ceskho »

Offline yuri.f_87

  • Gamberetto
  • *
  • Post: 5
    • Mostra profilo
Re: Input nel terminale
« Risposta #2 il: 16 Novembre 2010, 07:27:05 »
Premetto che non volevo essere irrispettoso nei confronti di nessuno.. ho molto rispetto anzi per qualsiasi persona che si dà da fare per il progresso del software libero.

Comunque ammetto di aver ampiamente sottovalutato le potenzialità di Gambas.

Chiedo scusa a chiunque si sia sentito offeso.

Ho provato a modificare il programmino di Gambas escludendo Python in poche parole
Codice: [Seleziona]
PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()

END

PUBLIC SUB Button1_Click()
  SHELL "cd && gksu apt-get update" WAIT
  Message.Info("Processo eseguito!", "Fine processo")
END

PUBLIC SUB Button2_Click()

  Message.Info("Ciao ciao!", "Exit")
  FMain.Close()

END

Niente di più semplice!

Il problema però è rimasto in quanto, quando ci sono degli aggiornamenti, a terminale appare la scritta "... dopo l'aggiornamento verranno occupati x mb di spazio. Procedere [s/n]?".

Come posso fare ad interagire col terminale?

Grazie mille per la dritta Ceskho e grazie a chi mi aiuterà.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Input nel terminale
« Risposta #3 il: 16 Novembre 2010, 12:54:55 »
Scusa, ma trasformare il programma python in gambas?

E' un'idea...  :D

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Input nel terminale
« Risposta #4 il: 16 Novembre 2010, 13:13:39 »
Esempio da prendere con 'le molle'... solo dimostrativo

devi eseguire il programma compilato (e non eseguito direttamente da sorgenti) come root:
al click del button esegue apt-get dist-upgrade... se ci sono pacchetti da aggiornare digita S (o Y dipende dalla tua lingua di sistema) nella textbox e dai invio.

Ti ripeto che e' solo per farti capire come gestire un processo, quindi dovrai poi adattarlo alle tue esigenze

Ciao

Offline yuri.f_87

  • Gamberetto
  • *
  • Post: 5
    • Mostra profilo
Re: Input nel terminale
« Risposta #5 il: 16 Novembre 2010, 13:27:25 »
Scusa, ma trasformare il programma python in gambas?

E' un'idea...  :D

già fatto  ;D

Esempio da prendere con 'le molle'... solo dimostrativo

devi eseguire il programma compilato (e non eseguito direttamente da sorgenti) come root:
al click del button esegue apt-get dist-upgrade... se ci sono pacchetti da aggiornare digita S (o Y dipende dalla tua lingua di sistema) nella textbox e dai invio.

Ti ripeto che e' solo per farti capire come gestire un processo, quindi dovrai poi adattarlo alle tue esigenze

Ciao

Grazie per l'aiuto.. Sto iniziando a capire ma mi rimangono dei dubbi.. Ad esempio come far capire a Gambas che quello che c'è scritto nella textbox è da digitare nel terminale..
Altro dubbio: come faccio ad inserire l'output del terminale in una textbox?
Qusta sera a casa proverò a leggere un po' di guide.. se qualcuno sapesse come fare, un aiuto sarebbe gradito.  ;D
Grazie di tuttoin anticipo,
Yuri

Offline yuri.f_87

  • Gamberetto
  • *
  • Post: 5
    • Mostra profilo
Re: Input nel terminale
« Risposta #6 il: 16 Novembre 2010, 13:28:51 »
Scusami milio non avevo visto l'allegato.. Qui a lavoro non posso aprirlo..
Qusta sera Ti faccio sapere..
Grazie mille ancora
Yuri

Offline yuri.f_87

  • Gamberetto
  • *
  • Post: 5
    • Mostra profilo
Re: Input nel terminale
« Risposta #7 il: 17 Novembre 2010, 07:31:12 »
Eccomi..

Grazie al preziosissimo aiuto di milio e ad un paio di guide ho risolto..
Grazie a tutti

Yuri

vaillant86

  • Visitatore
Re: [RISOLTO] Input nel terminale
« Risposta #8 il: 18 Novembre 2010, 10:01:26 »
Ciao a tutti. Mi unisco alla discussione perché mi interessa questo punto

Altro dubbio: come faccio ad inserire l'output del terminale in una textbox?

cioè vorrei che i comandi che attualmente richiamo con

Codice: gambas [Seleziona]

SHELL "xterm -e 'bla bla bla'"


possa invece indirizzarli verso un terminale creato appositamente o una textbox.

Grazie :)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: [RISOLTO] Input nel terminale
« Risposta #9 il: 18 Novembre 2010, 19:43:13 »
il forum è pienissimo di post su come indirizzare l' output di un processo su una textarea o textbox.

inoltre nell' esempio di miglio è già presente il codice che esegue questa funzione

certo ch ese utilizzi Xterm potresti non riuscire a realizzare quanto richiesto perchè in pratica lanci un altro terminale e quindi gambas potrebbe non essere in grado di leggerne il processo, ti conviene lanciare solamente il comando lasciando che sia shell o exec ad eseguire il tutto

« Ultima modifica: 18 Novembre 2010, 19:46:05 da fsurfing »

vaillant86

  • Visitatore
Re: [RISOLTO] Input nel terminale
« Risposta #10 il: 18 Novembre 2010, 21:00:25 »
Come indirizzare un dato comando su una textarea lo so, il problema è che comandi che richiedono un'interazione (esempio classico, il sudo) non funzionano. Io chiedevo questo...