Aufruf eines Widgets aus dem Hauptmenü

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
MDGo88
User
Beiträge: 18
Registriert: Sonntag 20. September 2009, 13:39

Hallo zusammen,
ich hab da ein Problem mit dem Aufruf eines Widgets aus dem Hauptmenü.
Ich habe zunächst ein Widget erstellt und dies als Popup-Fenster geöffnet.
Das hat funktioniert.
Dann wollte ich jedoch dieses Widget bei Auswahl über das Menü in die main Form
integrieren.
Das hat im Prinzip auch funktioniert, jedoch kann ich danach weder auf das Widget
noch auf die main-Form zugreifen.
Ich kann die GUI nur noch über den Taskmanager beenden.
Was mache ich hier falsch?
Würde mich über Eure Hilfe sehr freuen.

Viele Grüße
MDGo88

Code: Alles auswählen

# -*- coding: utf-8 -*-

import sys
import time

from PyQt4 import QtCore, QtGui
import Ui_main
import Ui_testWidget

class HauptGUI(QtGui.QMainWindow):
    def __init__(self, parent=None):
        self.testGUI1 = QtGui.QMainWindow()
        
        QtGui.QMainWindow.__init__(self, parent)
        self.testGUI1 = Ui_main.Ui_HauptMenue()
        self.testGUI1.setupUi(self)
        
        ## Events Main ##
        self.connect(self.testGUI1.actionDetails3, QtCore.SIGNAL("triggered()"), self.openForm1)
        self.connect(self.testGUI1.actionBeenden, QtCore.SIGNAL("triggered()"), self._beforeExit)
        ## Events Main ##

    def openForm1(self):
        self.widget1 = QtGui.QWidget(self)
        self.testGUI4 = Ui_testWidget.Ui_Form()
        self.testGUI4.setupUi(self.widget1)
        self.widget1.show()


    # Wird ausgefürt, wenn im Menü Datei "beenden" gewählt wird
    def _beforeExit(self):
        QtGui.QMainWindow.close(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    testGUI1 = HauptGUI()
    testGUI1.show()
    sys.exit(app.exec_())
MDGo88
User
Beiträge: 18
Registriert: Sonntag 20. September 2009, 13:39

Hallo zusammen,

hat etwas gedauert aber ich habe eine Lösung gefunden. Ob die nun das gelbe vom Ei ist weiß ich nicht.
Wenn jemand eine elegantere Variante hat, wäre dankbar.

Viele Grüße
md88go

Code: Alles auswählen

# -*- coding: utf-8 -*-

import sys
import time

from PyQt4 import QtCore, QtGui
import Ui_main
import Ui_testWidget, Ui_testWidget2

class HauptGUI(QtGui.QMainWindow):
    def __init__(self, parent=None):
        self.testGUI1 = QtGui.QMainWindow()
        
        QtGui.QMainWindow.__init__(self, parent)
        self.testGUI1 = Ui_main.Ui_HauptMenue()
        self.testGUI1.setupUi(self)
        
        self.w = QtGui.QWidget()
        self.setCentralWidget(self.w)        
        
            
        self.widget1 = QtGui.QWidget(self.w)
        self.testGUI4 = Ui_testWidget.Ui_Form()
        self.testGUI4.setupUi(self.widget1)


        self.widget2 = QtGui.QWidget(self.w)
        self.testGUI5 = Ui_testWidget2.Ui_Form()
        self.testGUI5.setupUi(self.widget2)
        
        self.widget1.hide()
        self.widget2.hide()
        

        ## Events Main ##
        self.connect(self.testGUI1.actionDetails3, QtCore.SIGNAL("triggered()"), self.openForm1)
        self.connect(self.testGUI1.actionSichern, QtCore.SIGNAL("triggered()"), self.openForm2)
        self.connect(self.testGUI1.actionBeenden, QtCore.SIGNAL("triggered()"), self._beforeExit)
        ## Events Main ##

    def openForm1(self):
        self.widget1.show()
        self.widget2.hide()
        
    def openForm2(self):
        self.widget2.show()
        self.widget1.hide()
        


    # Wird ausgefürt, wenn im Menü Datei "beenden" gewählt wird
    def _beforeExit(self):
        QtGui.QMainWindow.close(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    testGUI1 = HauptGUI()
    testGUI1.show()
    sys.exit(app.exec_())
Antworten