2017-06-30 2 views
0

Ich habe ein vordefiniertes Widget mit qtDesigner, und ich möchte es in mehreren Registerkarten verwenden. Wenn ich durch Hinzufügen des Widgets mehrmals einen neuen Tab hinzufüge, wird es nur einmal ausgeführt. Zum Beispiel:Reuse QWidget PyQt5

for i in range(3): 
    self.tab_widget_name.addTab(self.widget_name, str(i)) 
+0

Sie benötigen eine neue Instanz erstellen das Widget für jede Registerkarte. – user3419537

Antwort

0

wie @ user3419537 erwähnt, müssen Sie für jede Registerkarte neues Widget erstellen, ist es nicht genug Label des Registerkarte zu ändern.

self.tabs = QTabWidget(self) 

self.tab1 = QWidget() 
self.tab2 = QWidget() 
self.tab3 = QWidget() 

self.tabs.addTab(self.tab1, "1") 
self.tabs.addTab(self.tab2, "2") 
self.tabs.addTab(self.tab3, "3") 

Alternativ können Sie es in einer for-Schleife tun, aber Sie könnten Verweis auf die Registerkarte Widget verlieren (wenn es Ihnen nichts ausmacht):

for i in range(3): 
    self.widget_name = QWidget() 
    self.tab_widget_name.addTab(self.widget_name, str(i)) 
+0

Ja danke. Aber was Sie vorschlagen, sind 3 verschiedene Widgets. Ich wollte ein Widget (definiert in QtDesigner) haben und es gleichzeitig als virtuelles Widget verwenden. Mit einem Widget öffnen Sie 3 verschiedene Registerkarten. Vielleicht wäre die Lösung, jedes Mal eine neue Widget-Instanz zu erstellen, die sich auf ein vordefiniertes Widget bezieht. Ich weiß nicht, ob es gemacht werden kann. Trotzdem danke – Francesc

+0

Aber das passiert genau - Sie haben 'QWidget' definiert (es ist Ihr vordefiniertes Widget) und jedes Mal eine neue Instanz erstellen. Sie können natürlich Ihr eigenes 'MyPersonalWidget' definieren und dessen Instanzen anstelle von' QWidget' erstellen – Matho