Seite 1 von 1

Aufruf eines Widgets aus dem Hauptmenü

Verfasst: Mittwoch 3. März 2010, 10:56
von MDGo88
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_())

Lösung

Verfasst: Donnerstag 4. März 2010, 15:13
von MDGo88
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_())