PyQt: ¿Cómo puedo salir de un QDialog?
Pregunta
He crear un widget QDialog. Mi problema es que no puedo salir de la QDialog. Si presiono uno de los botones, entonces el QDialog sólo se establece a "ocultar". Aquí es una pequeña parte del código. Es ejecutable. No sé lo que estoy haciendo mal. Tal vez uno de ustedes me puede decir.
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class MyClass(QDialog):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
# init
# ------------------------------------------------
self.setMinimumWidth(600)
self.setWindowTitle("Select Dingsda")
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.layoutWidget = QWidget(self)
self.liste = []
# widgets and layouts
# ------------------------------------------------
tempLayout = QHBoxLayout()
self.cancelButton = QPushButton("Cancel")
self.connect(self.cancelButton, SIGNAL('clicked()'), self.cancel)
self.addSelectedButton = QPushButton("Add Selected")
self.connect(self.addSelectedButton, SIGNAL('clicked()'), self.addSelected)
tempLayout.addStretch()
tempLayout.addWidget(self.cancelButton)
tempLayout.addWidget(self.addSelectedButton)
self.layout.addLayout(tempLayout)
# test-data
# ------------------------------------------------
# methods
# ------------------------------------------------
def cancel(self):
self.close()
def addSelected(self):
self.liste = ["1", "2", "3", "4", "5"]
self.accept()
def exec_(self):
if QDialog.exec_(self) == QDialog.Accepted:
return self.liste
else:
return []
def test():
app = QApplication([""])
form = MyClass()
i = form.exec_()
print i
sys.exit(app.exec_())
#-------------------------------------------------------------------------------
# main
#-------------------------------------------------------------------------------
if __name__ == "__main__":
test()
Solución
No sé pitón en absoluto, sino que parece que el diálogo es la única ventana para su aplicación. Es posible que desee para tratar de invocar el diálogo con form.show_()
en lugar de form.exec_()
. Este último se utiliza normalmente para visualizar el cuadro de diálogo de forma modal sobre una ventana padre.
Otros consejos
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow