Salut, je commence a tenter la programmation GUI et je me met a PyQT4. J'ai un probleme bete. Mon logiciel fonctionne bien sauf sur un point. J'ai mis un bouton reset et du coup si j'ai un champ a editer et que je clic sur return cela me declanche le signal clicked pour reset. Cela me semble assez bizarre. Est-ce un comportement normal? Si oui comment faire pour faire en sorte de declencher reset uniquemet quand je clic dessus?
Voila un petit programme minimaliste qui montre mon probleme.
Merci d'avance.
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Test(QDialog):
def __init__(self, parent=None):
super(Test, self).__init__(parent)
self.toto = 0.3
self.totolabel = QLabel('toto')
self.totoedit = QLineEdit('{0:.2f}'.format(self.toto))
buttonBox = QDialogButtonBox(QDialogButtonBox.Reset)
layout = QGridLayout()
layout.addWidget(self.totolabel,0,0)
layout.addWidget(self.totoedit,0,1)
layout.addWidget(buttonBox, 1, 0, 1, 2)
self.setLayout(layout)
self.connect(self.totoedit, SIGNAL('returnPressed()'), self.returnedit)
self.connect(buttonBox.button(QDialogButtonBox.Reset), SIGNAL("clicked()"), self.resetForm)
def resetForm(self):
print 'button reset clicked'
def returnedit(self):
print 'return pressed in line edit'
app = QApplication(sys.argv)
test = Test()
test.show()
app.exec_()
# je programmes pas en python
Posté par NeoX . Évalué à -1.
self.connect(buttonBox.button(QDialogButtonBox.Reset), SIGNAL("clicked()"), self.resetForm)
j'en deduis que ton code envoie le signal 'clicked' quand tu appuies sur le bouton reset
je me trompe ?
[^] # Re: je programmes pas en python
Posté par NeoX . Évalué à 2.
quand tu fais entrer, ca te "click" aussi sur le bouton reset, effectivement c'est pas genial
il faut peut-etre regarder ou se trouve le focus quand tu fais entrer, afin de ne valider que ce sur quoi est posé ton focus
sinon ca fait peut-etre comme les formulaires PHP,
tu peux avoir 25 champs, un bouton, le fait de faire "entrer" ca appuie sur le bouton.
il faut alors faire un bouton valide, un bouton reset
et mettre le focus par defaut sur valide
comme ca "entrer" va valider le formulaire
[^] # Re: je programmes pas en python
Posté par Albert_ . Évalué à 1.
ps: Au passage je remercie les personnes considerant cette question dans les forums et partie python (pyqt4 c'est du python) comme inutile c'est syper sympa et tres tres utile...
[^] # Re: je programmes pas en python
Posté par Albert_ . Évalué à 2.
[^] # Re: je programmes pas en python
Posté par Albert_ . Évalué à 2.
[^] # explication
Posté par Octabrain . Évalué à 3.
"However, if there is no default button set and to preserve which button is the default button across platforms when using the QPushButton::autoDefault property, the first push button with the accept role is made the default button when the QDialogButtonBox is shown,"
Puis :
http://doc.trolltech.com/4.5/qpushbutton.html#default-prop
"A button with this property set to true (i.e., the dialog's default button,) will automatically be pressed when the user presses enter"
[^] # Re: explication
Posté par Albert_ . Évalué à 2.
[^] # Re: explication
Posté par Octabrain . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.