I'm using QTabWidget to show content with different sizes. How do I resize my tabs in a way that it matches my content?
Goal:
Tab1:
Tab2:
I tried to write a function that connects to QTabWidget.currentChanged(), I managed to ignore QSizePolicy, but the resize doesn't come into effect. I can however resize manually without problem.
import sys
from PyQt5.QtWidgets import (
QApplication,
QCheckBox
QTabWidget,
QVBoxLayout,
QHBoxLayout,
QWidget,
QLabel,
QLineEdit,
QSizePolicy
)
class Window(QWidget):
def curTabChanged(self,index):
for i in range(self.tabs.count()):
if i == index:
self.tabs.widget(i).setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Preferred)
else:
self.tabs.widget(i).setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)
#self.tabs.resize(self.tabs.widget(index).minimumSizeHint())
self.tabs.widget(index).resize(100,100)
self.tabs.widget(index).adjustSize()
#self.resize(self.minimumSizeHint())
self.resize(100,100)
self.adjustSize()
def __init__(self):
super().__init__()
self.setWindowTitle("Define Volumes")
self.resize(300, 100)
# Create a top-level layout
layout = QVBoxLayout()
self.setLayout(layout)
# Create the tab widget with two tabs
self.tabs = QTabWidget()
self.tabs.addTab(self.generalTabUI(), "Input")
self.tabs.addTab(self.helpTabUI(), "Help")
self.tabs.currentChanged.connect(self.curTabChanged)
self.curTabChanged(0)
layout.addWidget(self.tabs)
self.setLayout(layout)
def generalTabUI(self):
"""Create the General page UI."""
generalTab = QWidget()
layout = QHBoxLayout()
self.label_text_left = QLabel("1-")
self.label_text_right = QLabel("-100")
self.textbox = QLineEdit()
layout.addWidget(self.label_text_left)
layout.addWidget(self.textbox)
layout.addWidget(self.label_text_right)
generalTab.setLayout(layout)
return generalTab
def helpTabUI(self):
helpTab = QWidget()
layout = QVBoxLayout()
self.label = QLabel(self)
self.label.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit,\n\nsed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. \n\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. \n\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")
layout.addWidget(self.label)
helpTab.setLayout(layout)
return helpTab
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())