2016-08-03 26 views
0

Ich habe aus diesem Beispiel den Code unter Verwendung von PyQt: How to hide QMainWindow:PyQt - Hide Mainwindow und zeigen QDialog ohne das Taskleistensymbol verschwindet

class Dialog_02(QtGui.QMainWindow): 
    def __init__(self, parent): 
     super(Dialog_02, self).__init__(parent) 
     # ensure this window gets garbage-collected when closed 
     self.setAttribute(QtCore.Qt.WA_DeleteOnClose) 
    ...  

    def closeAndReturn(self): 
     self.close() 
     self.parent().show() 

class Dialog_01(QtGui.QMainWindow): 
    ... 

    def callAnotherQMainWindow(self): 
     self.hide() 
     self.dialog_02 = Dialog_02(self) 
     self.dialog_02.show() 

Es funktioniert, aber wenn ein zweites Fenster zu öffnen, in der Taskleiste Symbol des Fensters doesn nicht zeigen. Ich habe versucht, mit QtGui.QDialog für den Dialog_02, aber das gibt mir das gleiche Ergebnis.

Wie gehe ich bei der Lösung dieses Problems vor?

Edit: Ich bin auf 10 Windows-

Antwort

1

nur raten (weil ich nicht weiß, auf welcher Plattform Sie sind auf, und ich habe keine Verwendung Taskleiste mich, so dass ich kann es nicht wirklich testen), aber versuchen die Eltern loszuwerden:

class Dialog_02(QtGui.QMainWindow): 
    def __init__(self, other_window): 
     super(Dialog_02, self).__init__() 
     # ensure this window gets garbage-collected when closed 
     self.setAttribute(QtCore.Qt.WA_DeleteOnClose) 
     self._other_window = other_window 
    ...  

    def closeAndReturn(self): 
     self.close() 
     self._other_window.show() 
+0

ich habe Ihre Methode versucht und es jedoch nicht funktioniert, wenn die closeAndReturn Funktion zum Hauptfenster zurückzukehren Aufruf schlägt es mir diesen Fehler geben: self._other_window() .show() -> TypeError: 'Window' Objekt ist nicht aufrufbar – ZeZe

+0

Macht nichts. Ich hatte self._other_window(). Show() statt self._other_window.show() geschrieben – ZeZe