Bonjour tout le monde, j'éssais de crée un petit programme tout bête pour m'entrainer sur wxpython mais la je bloque !
Le but de mon programme est de déclancher un compte à rebourg de 15 segondes quand on click sur un bouton, si on click sur un autre bouton on arete le compte à rebourg !
mais j'ai un probleme, sans doute ma méthode.
j'utilise une boucle while pour rafraichir mon label et décrémenter ma variable des segondes.
Mais une foit lancer imposible de clicker sur mon bouton pour arreter !
voila mon code :
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
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import wx
import time
class apPrincipale(wx.Frame):
	def __init__(self, titre):
		wx.Frame.__init__(self, None, 1, title=titre, size=(225,200))
		self.SetMinSize((225, 200))
		self.SetIcon(wx.Icon("bombe.ico", wx.BITMAP_TYPE_ICO))
		self.CentreOnParent()
 
		self.password = "1234"
		self.compteurtime = 15
		self.compteurtime2 = 0
		self.auto = 0
		#Code a desindenter a la fin du programme
		#while self.auto != 1:
		#	dlg = wx.TextEntryDialog(self, 'Entrez le mot de passe pour activer la bombe :','Erreur, mot de passe requis !')
		#	if dlg.ShowModal() == wx.ID_OK:
		#		if dlg.GetValue() == self.password:
		#			dlg.Destroy()
		#			self.auto = 1
		#	else:
		#		self.auto = 1
		#		dlg.Destroy()
		#		self.Destroy()
		self.conteneur = wx.Panel(self, 1, size=self.GetClientSize())
		self.timetext = wx.StaticText(self.conteneur, -1, "", (50, 5), style=wx.ALIGN_CENTRE)
		self.Exit = wx.Button(self.conteneur, 2, 'Exit', (10, 20))
		self.Amorce = wx.Button(self.conteneur, 3, 'Amorcer la bombe', (10, 45))
		self.Desamorce = wx.Button(self.conteneur, 4, 'Desamorcer la bombe', (10, 70))
		self.Desamorce.Disable()
		self.Bind(wx.EVT_SIZE, self.OnSize)
		self.Bind(wx.EVT_BUTTON, self.OnExit, id=2)
		self.Bind(wx.EVT_BUTTON, self.OnAmorcage, id=3)
	def OnExit(self, evt):
		self.Destroy()
	def OnSize(self, evt):
		self.conteneur.SetSize(self.GetClientSize())
	def OnAmorcage(self, evt):
		self.compteurtime2 = self.compteurtime
		self.Exit.Disable()
		self.Desamorce.Enable()
		self.Amorce.Disable()
		while self.compteurtime2 != -1:
			self.timetext.SetLabel(str(self.compteurtime2)+" Segondes restantes")
			self.compteurtime2 = self.compteurtime2 -1
			time.sleep(1)
		self.Desamorce.Disable()
		self.Exit.Enable()
		self.Amorce.Enable()
	def OnDesamorcage(self, evt):
		print "tu vient de desamorcer une bombe tes trop fort"
class MonApp(wx.App):
	def OnInit(self):
		fen = apPrincipale("Bombe")
		fen.Show(True)
		self.SetTopWindow(fen)
		return True
if __name__ == "__main__":
	app = MonApp()
	app.MainLoop()
Existe t-il d'autre méthode pour faire cela ?
Merci de vautre aide
timiti29