Bonjour,
Mon soucis dans ce bout de code est que si j enleve le print dans la boucle
le canvas ne se cree pas et la fonction create_rectangle ne s affiche pas
quelle est la relation entre print sur la console et Tkinter?
rapidement j explique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from Tkinter import * import subprocess def go(): top = Canvas(fenetre, relief=RAISED, borderwidth=4) top.grid() p = subprocess.Popen("dir c:",bufsize=0,shell=True, stdout=subprocess.PIPE).stdout while 1: line = p.read(3) if not line: break chaine=(line.partition(" ")[0]) if chaine.isdigit() == 1: top.delete(all) top.create_rectangle(1,1,int(chaine),40, fill="blue") print int(chaine) #ici est le probleme top.destroy() fenetre = Tk() bgo = Button(fenetre, text=" go ", command= go) bgo.grid() bquit = Button(fenetre, text=" Quit ", command= fenetre.quit) bquit.grid() fenetre.mainloop() fenetre.destroy()
je cree une fenetre tk avec 2 boutons bquit qui ferme l appli et bgo qui lance la fonction def go():
go : ouvre un canvas (top) dans ma fenetre
lance p un subprocess.Popen pipé qui lance betement 'dir c:'
tant que je lis 3 caracteres je continue sinon break (la commande dir est finie)
cette chaine je la coupe en 3 separé par un espace et je garde la partie 0 (du genre "424"," ","fichierTruc"
si la chaine est un digit (chiffre seulement) alors True je continue (dans l example 424)
j efface mes anciens rectangles (toute la liste comme cela c est certain)
j en cree un de x=1 y=1 longueur int(de la string chaine soit 424), hauteur 40, que je remplis en bleu
je print quelque chose ici la valeur convertie en nombre (donc 424)
la boucle finie j efface mon canvas (je retrouve mes 2 boutons)
le programme tel quel fonctionne, c est pas beau, ca va trop vite, le rectangle glignote mais c est pas grave
le probleme est que si je supprime le Print, il n y a plus de rectangle, ni d ailleurs de canvas
il faut un print n importe ou dans une des boucles (dans le if ou dans le while), qui imprime n importe quoi sinon ca marche pas
si quelqun a des indices, je suis preneur
Partager