0
Registerkarten, die vor app.exec_() hinzugefügt wurden, sehen wie alle anderen Registerkarten aus und funktionieren auch dann, wenn Sie nach dem Aufruf von app.exec_() eine neue Registerkarte hinzufügen, um sie zu trennen 'aus dem Haupt-App-Fenster. Bild unten :)Python PYQT Tabs außerhalb des Anwendungsfensters [why]
Warum? Wie kann ich es innerhalb des Fensters bewegen?
import threading
import time
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QFormLayout
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QTabWidget
from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtWidgets import QWidget
class ATry(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
time.sleep(1)
anotherTextEdit = QTextEdit()
anotherLineEdit = QLineEdit()
anotherLayout = QFormLayout()
anotherLayout.addRow(anotherTextEdit)
anotherLayout.addRow(anotherLineEdit)
anotherTab = QWidget()
anotherTab.setLayout(anotherLayout)
md.addTab(anotherTab, "Outside")
app = QApplication(sys.argv)
md = QTabWidget()
aTextEdit = QTextEdit()
aLineEdit = QLineEdit()
layout = QFormLayout()
layout.addRow(aTextEdit)
layout.addRow(aLineEdit)
thisTab = QWidget()
thisTab.setLayout(layout)
md.addTab(thisTab, "Inside")
a = ATry()
a.start()
md.show()
app.exec_()
Alle Qt GUI bezogenen Code muss in dem Haupt-Thread des Programms ausgeführt werden. Wenn Sie auf die Konsole schauen, sollten Sie die folgende Meldung sehen: QObject :: setParent: Übergeordnetes Element nicht festlegen, neues übergeordnetes Element befindet sich in einem anderen Thread. Der neue Tab wird entfernt, da 'md' nicht als übergeordnetes Element festgelegt werden kann. Warum das ohne Absturz läuft, bin ich nicht sicher – user3419537