PyQT QDialog wird versteckt aber nicht beenden
Verfasst: Mittwoch 18. August 2010, 22:51
Hi,
mit QDialog habe ich ein kleines Problem. Ich habe ein OK- und ein Cancel-Knopf. Wenn ich auf OK drücke, möchte ich dass das mir z.B. ein Liste mir Elementen zurückgegeben wird und wenn ich auf Cancel drücke, eine leere Liste. Das funktioniert auch soweit. Aber das QDialog wird leider nur versteckt, nicht beendet. Aus der Doku werde ich leider auch nicht schlau. Sys.exit() beendet es zwar, aber man bekommt nichts mehr zurück. Deletelater hilft leider auch nicht. Also wie kann ich es hinbekommen, dass mir das Widget noch etwas zurückgibt und dennoch komplett beende wird. Das Widget soll auch mit exec_ aufgerufen werden. Wäre nett, wenn mir jemand erklären könnte was ich falsch mache.
Hier der Code:
mit QDialog habe ich ein kleines Problem. Ich habe ein OK- und ein Cancel-Knopf. Wenn ich auf OK drücke, möchte ich dass das mir z.B. ein Liste mir Elementen zurückgegeben wird und wenn ich auf Cancel drücke, eine leere Liste. Das funktioniert auch soweit. Aber das QDialog wird leider nur versteckt, nicht beendet. Aus der Doku werde ich leider auch nicht schlau. Sys.exit() beendet es zwar, aber man bekommt nichts mehr zurück. Deletelater hilft leider auch nicht. Also wie kann ich es hinbekommen, dass mir das Widget noch etwas zurückgibt und dennoch komplett beende wird. Das Widget soll auch mit exec_ aufgerufen werden. Wäre nett, wenn mir jemand erklären könnte was ich falsch mache.
Hier der Code:
Code: Alles auswählen
class MyClass(QDialog):
def __init__(self, x, y, parent=None):
QWidget.__init__(self, parent)
def cancel(self):
self.close()
def addDingsda(self):
self.accept()
def exec_(self):
if QDialog.exec_(self) == QDialog.Accepted:
return self.dingsdaListe
else:
return []
def test():
app = QApplication([""])
form = MyClass(x, y)
i = form.exec_()
sys.exit(app.exec_())
if __name__ == "__main__":
test()