Bonjour a tous,
Je n'ai pas trouvé de sujet correspondant sur le forum alors je viens vers vous.
J'apprends PyQt depuis peu,après un passage a TKinter, et en testant je me retrouve face a ce probleme sans en comprendre le pourquoi du comment.
J'ai crée un formulaire qui est censé récupérer des saisies utilisateurs dans une liste afin d'un traitement ultérieur. Pour les récupérer j'utilise un bouton qui renvoie vers une méthode.Si lors de la 1ere utilisation tout se passe bien, la liste est valorisée,quand j'appuie a nouveau sur le dit bouton, alors impossible de récupérer les champs du formulaire pourtant affichés a l'écran. En testant un peu je me suis aperçu qu'en fait, le QFormLayout() était vide au 2ème appel depuis le bouton. J'imagine que c'est un problème de rafraichissement mais je n'arrive pas a trouver comment le faire.J'ai utilisé update() sur les Layout mais sans succès.
J'avoue ma noobitude en la matière,j'espère que quelqu'un a eu ce souci pour m'aider. Je vous passe le petit morceau de code qui démontre la chose :
Cordialement
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 # -*- coding:Utf-8 -*- import sys,os from PyQt4.QtCore import * from PyQt4.QtGui import * class Interface(QWidget): def __init__(self): super(interface,self).__init_() self.fenetre=QWidget() self.fenetre.setGeometry(50,50,400,200) self.form=QFormLayout() self.fenetre.setLayout(self.form) self.demarrage() self.fenetre.show() def demarrage(self): self.ltext1=QLineEdit() self.ltext2=QLineEdit() self.ltext3=QLineEdit() self.bouton1=QPushButton("Validez") self.bouton1.clicked.connect(self.bouton_clicked) self.form.addRow("entree1",self.ltext1) self.form.addRow("entree2",self.ltext2) self.form.addRow("entree3",self.ltext3) self.form.addRow(self.bouton1) def bouton_clicked(self): self.lst_saisie=[] while self.form.count(): self.item=self.form.takeAt(0) if type(self.item.widget)==QLineEdit: self.lst_saisie.append(str(self.item.widget().text())) print self.lst_saisie app=QApplication(sys.argv) fenetre=Interface() app.exec_()
Partager