Bonjour,
Je débute en Python et pyGTK.

Je suis habitué a faire des IHM dans d'autre langage, je connais donc le problème des traitement long dans les IHM.

J'ai donc essayé de faire un petit programme qui simule ce problème.
Voici donc le code de mon interface:
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
#!/usr/bin/python
import pygtk
pygtk.require("2.0")
import gtk
import threading
 
import test
 
 
class Fenetre:
	def __init__(self):
		mainWindow = gtk.Window()
		mainWindow.set_title("test")
		mainWindow.resize(700,200)
		mainWindow.connect("destroy", self.on_mainWindow_destroy)
		mainWindow.set_position(gtk.WIN_POS_CENTER)
 
		##########################################################
		#                      PARTIE HAUTE                      #
		##########################################################
 
		self.runButton = gtk.Button("Run")
		self.runButton.connect("clicked", self.on_myButton_clicked)
 
		self.folderChooser=gtk.FileChooserButton("Choisir le dossier cible")
		self.folderChooser.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
 
		##########################################################
		#                    PARTIE CENTRALE                     #
		##########################################################
		scrollPan = gtk.ScrolledWindow()
		scrollPan.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
		self.affichage=gtk.Label()
		self.affichage.set_justify(gtk.JUSTIFY_LEFT)
 
		scrollPan.add_with_viewport(self.affichage)
		cadre=gtk.Frame("Log")
		cadre.add(scrollPan)
 
		##########################################################
		#                      POSITIONNEMENT                    #
		##########################################################
 
		layoutPrinc=gtk.Table(10,3,True)
		layoutPrinc.attach(self.folderChooser,0,2,0,1)
		layoutPrinc.attach(self.runButton,2,3,0,1)
		layoutPrinc.attach(cadre,0,3,1,10)
		mainWindow.add(layoutPrinc)
 
		##########################################################
		mainWindow.show_all()
 
 
	def on_mainWindow_destroy(self, widget):
		gtk.main_quit()
 
	def on_myButton_clicked(self, widget):
		threading.Thread(target=test.run,args=(self)).start()
 
 
if __name__ == "__main__":
	Fenetre()
	gtk.main()
Comme vous pouvez le voir je lance un traitement dans un thread séparer lorsque je clique sur mon bouton.

Voici le traitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
import time
 
def run(f):
    for i in range(0,100):
        f.affichage.set_text(f.affichage.get_text()+"\ntest")
        time.sleep(1)
        print('test')

Donc mon problème est que la lorsque je clique sur le bouton rien ne ce passe.
Pouvez vous m'indiquez la bonne marche a suivre pour pouvoir faire des traitements long avec une IHM ?

Je vous remercie d'avance pour votre aide