Vom ChildWidget aus auf die Methode des ParentWidget zugreifen
Verfasst: Samstag 15. April 2017, 14:07
Hallo Python -Forum!
Ich habe mit dem Qt Designer zwei einfache Fenster gebaut: Ein Hauptfentser und ein Dialogfenster. Jetzt will ich, dass das Dialogfenster erscheint, wenn ich im Hauptfenster auf einen button klicke. Das klappt.
Im Dialogfenster gebe ich dann meine Daten ein. Wenn ich nun auf "Verbinden" klicke, soll sich das Dialogfenster schließen und gleichzeitig eine Funktion des Hauptfensters aufrufen und ihr als Parameter meine eingegebenen Daten übergeben.
Leider kann ich nicht auf die Methode des Hauptfensters vom Dialogfenster aus zugreifen.
Kann mir jemand meinen Fehler zeigen?
Ich nutze Python 2.7 und Pyqt4.
Hier einBeispielcode:
Ich habe mit dem Qt Designer zwei einfache Fenster gebaut: Ein Hauptfentser und ein Dialogfenster. Jetzt will ich, dass das Dialogfenster erscheint, wenn ich im Hauptfenster auf einen button klicke. Das klappt.
Im Dialogfenster gebe ich dann meine Daten ein. Wenn ich nun auf "Verbinden" klicke, soll sich das Dialogfenster schließen und gleichzeitig eine Funktion des Hauptfensters aufrufen und ihr als Parameter meine eingegebenen Daten übergeben.
Leider kann ich nicht auf die Methode des Hauptfensters vom Dialogfenster aus zugreifen.
Kann mir jemand meinen Fehler zeigen?
Ich nutze Python 2.7 und Pyqt4.
Hier einBeispielcode:
Code: Alles auswählen
import sys
import PyQt4.QtCore as core
import PyQt4.QtGui as gui
import PyQt4.uic as uic
class Hauptfenster ():
def __init__(self):
gui.QMainWindow.__init__(self)
self.ui = uic.loadUi("Hauptfenster.ui",self)
# Slots:
self.ui.actionVerbinden.triggered.connect(self.clickVerbinden)
self.ui.buttonBeenden.clicked.connect(self.clickBeenden)
def clickBeenden(self):
self.close()
def clickVerbinden(self):
self.anmeldedialog = AnmeldeDialog()
self.anmeldedialog.exec_()
def clickSchreiben(self, host, user, pw, db):
self.anmeldedialog.close()
print host, user, pw, db
class AnmeldeDialog(gui.QDialog):
def __init__(self):
gui.QDialog.__init__(self)
self.anm = uic.loadUi("Anmeldedialog.ui",self)
self.host = self.anm.lineHost.text()
self.user = self.anm.lineUser.text()
self.pw = self.anm.linePassword.text()
self.db = self.anm.lineDatabase.text()
#Slots:
self.anm.buttonAbbrechen.clicked.connect(self.startAbbrechen)
self.anm.buttonVerbinden.clicked.connect(self.parent().clickSchreiben(self.host,self.user,self.pw,self.db))
def startAbbrechen():
self.anm.close()
def mainfunktion():
app = gui.QApplication(sys.argv)
hauptfenster = Hauptfenster()
hauptfenster.show()
sys.exit(app.exec_())
if __name__ == '__main__':
mainfunktion()