Je me demande comment je peux empêcher l'ouverture d'une boîte de dialogue si certaines conditions sont remplies dans son instruction __init__
. Le code suivant essaie d'appeler la fonction 'self.close()' et il le fait, mais (je suppose) puisque le dialogue n'a pas encore démarré sa boucle d'événement, qu'il ne déclenche pas l'événement de fermeture ? Y a-t-il un autre moyen de fermer et/ou d'arrêter l'ouverture de la boîte de dialogue sans déclencher un événement?Comment arrêter l'exécution d'un QDialog dans l'instruction __init__ (ou immédiatement après)?
code Exemple:
from PyQt4 import QtCore, QtGui
class dlg_closeInit(QtGui.QDialog):
'''
Close the dialog if a certain condition is met in the __init__ statement
'''
def __init__(self):
QtGui.QDialog.__init__(self)
self.txt_mytext = QtGui.QLineEdit('some text')
self.btn_accept = QtGui.QPushButton('Accept')
self.myLayout = QtGui.QVBoxLayout(self)
self.myLayout.addWidget(self.txt_mytext)
self.myLayout.addWidget(self.btn_accept)
self.setLayout(self.myLayout)
# Connect the button
self.connect(self.btn_accept,QtCore.SIGNAL('clicked()'), self.on_accept)
self.close()
def on_accept(self):
# Get the data...
self.mydata = self.txt_mytext.text()
self.accept()
def get_data(self):
return self.mydata
def closeEvent(self, event):
print 'Closing...'
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
dialog = dlg_closeInit()
if dialog.exec_():
print dialog.get_data()
else:
print "Failed"
Merci pour la réponse! C'est à peu près ce que j'ai fini par faire. Dans l'application actuelle, j'ai un widget qui obtient des informations à partir d'une base de données, mais je passe une connexion de base de données à ce widget. À l'origine, j'essayais d'ouvrir la connexion dans __init__ et de fermer la boîte de dialogue en cas d'échec, d'où l'exemple ci-dessus. Au lieu de cela, je suis en train d'ouvrir la connexion à l'extérieur, et si ça marche je passe dans une connexion de référence sinon je ne lance pas le 'exec_' – Jonathan
Je suis content, je pourrais t'aider :-) Happy hacking avec pyqt :-) – gruszczy