Ich habe ein Problem mit dem Anzeigen von Fenstern mit PyQt4.
Ich habe zuerst ein QMainWindow, von dem aus über Weiter/Zurück Buttons nacheinander 3 QDialogs geöffnet werden um am Ende der Folge etwas zu berechnen. Von QMainWindow auf QDialog_1 funktioniert alles einwandfrei, allerdings, wenn ich in Dialog_1 'weiter' klicke, wird Dialog_2 nicht angezeigt. Wenn ich hier allerdings show() mit exec_() ersetze wird es gezeigt (aber das will ich natürlich nicht, weil der Benutzer die Kontrolle behalten soll). Hat das mit dem Aufrufen eines neuen QDialogs aus einem QDialog und nicht QMainWindow zu tun? Wo sonst könnte das Problem stecken?
Code: Alles auswählen
# in class MainWindow
def abbrechen(self) :
if QMessageBox.question(None, 'MyPlugin', 'Wollen Sie den Vorgang wirklich abbrechen?',
QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes :
self.ui.close()
else :
pass
def weiter(self) :
self.ui.hide()
QDialog_1(self.iface, self.layer)
Code: Alles auswählen
# in class Dialog_1
[...]
# Set up the user interface from Designer
code_dir = os.path.dirname(os.path.abspath(__file__))
self.Dialog_1_ui= loadUi(os.path.join(code_dir, "Ui_Dialog_1.ui"))
self.Dialog_1_ui.show()
[...]
def abbrechen(self) :
[...]
def weiter(self) :
self.Dialog_1_ui.close()
Dialog_2(self.iface, self.layer)
def zurueck(self) :
self.Dialog_1_ui.close()
MainWindow(self.iface)
Code: Alles auswählen
# in class Dialog_2
# Set up the user interface from Designer
code_dir = os.path.dirname(os.path.abspath(__file__))
self.Dialog_2_ui = loadUi(os.path.join(code_dir, "Ui_Dialog_2.ui"))
self.Dialog_2_ui.show()
[...]