2017-08-18 6 views
0

J'essaie d'ajouter plusieurs QDockWidgets tabifiés, mais je ne peux que devoir les ancrer en même temps.Ajouter plusieurs widgets ancrés

code MWe:

from PyQt5.QtWidgets import * 
from PyQt5.QtCore import * 

class DockWindow(QDockWidget): 
    def __init__(self, parent, name): 
     super().__init__(parent) 

     parent.addDockWidget(Qt.TopDockWidgetArea, self) 
     self.setWindowTitle(name) 
     child = parent.findChildren(DockWindow) 

     if len(child) > 1: 
      parent.tabifyDockWidget(self, child[0]) 
      self.raise_() 


app = QApplication(sys.argv) 
main = QMainWindow() 

for i in range(10): 
    DockWindow(main, str(i)) 


main.show() 
sys.exit(qApp.exec_()) 

enter image description here

Répondre

1

Selon le docs:

QMainWindow vide :: tabifyDockWidget (QDockWidget * premier, QDockWidget * secondes)

Déplace le second widget de quai au-dessus du premier widget de quai, créant une zone à onglets dans la fenêtre principale.

De ce qui est conclu dans le premier paramètre doit être le QDockWidget initial, le cas échéant child[0], la nouvelle deuxième QDockWidget, dans votre cas self. Le problème est résolu en changeant:

parent.tabifyDockWidget(self, child[0]) 

à:

parent.tabifyDockWidget(child[0], self) 

Screenshot:

enter image description here

+0

erreur stupide de ma part. Merci pour cette clarification –