@JonB I found on StackOverflow someone bringing up the same issue. It was 8 years old so I needed to bring it up to PySide6. It does indeed show the same problem, one tab needing to be large forcing the smaller tab to grow, needlessly to the same size. There is an answer which looks like it might work but I could not see how to implement it. In the code I've commented out code corresponding to the answer.
#!/bin/python
import sys
from PySide6 import QtGui, QtCore, QtWidgets
from PySide6.QtWidgets import (QApplication, QMainWindow, QTableWidget,
QTableWidgetItem, QVBoxLayout, QWidget, QTabWidget, QLayout, QSizePolicy)
class TabExample(QtWidgets.QWidget):
def __init__(self):
super(TabExample, self).__init__()
self.initUI()
def initUI(self):
self.vbox_main = QtWidgets.QVBoxLayout()
self.table_blank = QtWidgets.QTableWidget(10, 4)
self.tabw = QtWidgets.QTabWidget()
self.tab_A = QtWidgets.QWidget()
self.vbox_A = QtWidgets.QVBoxLayout(self.tab_A)
for i in range(40):
lab = QtWidgets.QLabel('label %d' %i)
self.vbox_A.addWidget(lab)
self.tab_B = QtWidgets.QWidget()
self.vbox_B = QtWidgets.QVBoxLayout(self.tab_B)
for i in range(5):
lab = QtWidgets.QLabel('labelB %d'%i)
self.vbox_B.addWidget(lab)
#COMMENT OUT NEXT LINE TO SEE DESIRED SIZE OF TAB B
self.tabw.addTab(self.tab_A, 'Tab A')
self.tabw.addTab(self.tab_B, 'Tab B')
self.vbox_main.addWidget(self.table_blank, 1)
self.vbox_main.addWidget(self.tabw)
self.setLayout(self.vbox_main)
self.setGeometry(0,0, 400, 600)
#self.move(QtGui.QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
self.show()
# def __init__(self):
# super(TabExample, self).__init__()
# self.initUI()
# #self.tabWidget_2.currentChanged.connect(self.updateSizes)
# #self.tab_B.parentWidget().connect(lab,800,600)
#
# self.tab_B.currentChanged.connect(self.updateSizes)
# def updateSizes(self):
# for i in range(self.tabWidget_2.count()):
# #self.tabWidget_2.widget(i).setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
# self.tab_B.widget(i).setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
#
# #current = self.tabWidget_2.currentWidget()
# current = self.tab_B.currentWidget()
# current.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
def main():
app = QtWidgets.QApplication(sys.argv)
tabExample = TabExample()
sys.exit(app.exec())
if __name__ == "__main__":
main()