Signale zwischen Fenstern eines Programms

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Vondor
User
Beiträge: 11
Registriert: Mittwoch 11. November 2009, 17:27

Moin...
Ich verzweifel mal wieder....

Ich hab ein Programm das eine mdiArea enthält...
Aus der Toolbar kann ich dann 2 Unterfenster öffnen.

Nun Greift (im Orginal) das erste Fenster auf eine Datenbank zu und listet die auf.
Wenn ich dann auf eine der dargestellten Zeilen klicke, soll eine Funktion ausgelöst werden, die beim 2ten Unterfenster, wenn es denn geöffnet ist, die GUI (Bzw die Tabelle in dem Unterfenster) Aktualisiert.

Wenn ich aber auf irgendein Qt Objekt von dem anderen Unterfenster zugreife. Wird mir herausgegeben das dieser Datentyp nicht existiert.
Alle anderen Python internen Funktionen laufen anstandslos...

Warum? Bzw wie löse ich das?

Kurzfassung:
Wie mache ich es, das wenn sich in Fenster A etwas ändert,
auch automatisch Änderungen in Fenster B stattfinden.


Code: Alles auswählen


class Main(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.subs = ""        
        
        self.connectSignals()
        
    def connectSignals(self):
        self.connect(self.ui.actionTree, QtCore.SIGNAL("toggled(bool)"), self.B_Topic )
        self.connect(self.ui.actionTable, QtCore.SIGNAL("toggled(bool)"), self.B_Index )
        
    def B_Topic(self):
         Topic = subTopic()
         self.ui.mdiArea.addSubWindow(Topic)
         Topic.show()
    
    def B_Index(self):
         Index = subIndex()
         self.ui.mdiArea.addSubWindow(Index)
         Index.show()
        
class subTopic(QtGui.QWidget):   
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.subT = Ui_Topics()
        self.subT.setupUi(self)
        self.connectSignals()
        
    def start(self):
         print "HI!"
         SI = subIndex()
         SI.start()
        
    def connectSignals(self):
        self.connect(self.subT.treeWidget, QtCore.SIGNAL("clicked(QModelIndex)"), self.start )
        
class subIndex(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.subI = Ui_Index()
        self.subI.setupUi(self)
        
    def start(self):
         self.subI.table_feed.setText("Done")
    
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = Main()
    myapp.show()
    sys.exit(app.exec_())
(Ui_MainWindow, Ui_Topics und Ui_Index sind extra Daten die ich mit dem QtDesigner erstellt habe.. und umgewandelt)

Gruß,
Vondor
Anfänger!
Bitte Rücksicht nehmen... :P
Nie Programmieren Studiert.. nie gelernt..
Nur Home-made Wissen x.x
Vondor
User
Beiträge: 11
Registriert: Mittwoch 11. November 2009, 17:27

Habs raus...
Hab zu direkt gedacht....
Anstatt das die Funktionen von den Klassen der Unterfunktionen aus weitergegeben werden, muss sie an die Hauptklasse geschickt werden und von dort an die Unterfunktionen... und schon geht das ganze!
Oh man..
Anfänger!
Bitte Rücksicht nehmen... :P
Nie Programmieren Studiert.. nie gelernt..
Nur Home-made Wissen x.x
Antworten