PyQt5 как дать возможность QSplitter изменять размеры QWidget
У меня есть простой интерфейс на PyQt5, который состоит из верхней и нижней зоны, разделенных горизонтальной чертой. Мне дать пользователю возможность перемещать эту разделительную полосу вверх и вниз, изменяя, соответственно, размеры верхней и нижней части. Мне подсказали, как это сделать и, в целом, QSplitter работает, но когда я тяну его вверх и он упирается в QWidget, дальнейшее изменение размеров невозможно. Как я могу сделать, чтобы QWidget вел себя так же, как, например, QTableWidget, то есть при изменении размеров просто сворачивался до минимальных размеров и у него появлялся ползунок? Ну или хотя бы без ползунка, чтобы была возможность его частично скрыть.
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.central_widget = QWidget(self)
self.setGeometry(50, 50, 1300, 700)
self.setCentralWidget(self.central_widget)
self.layout_main_window = QVBoxLayout()
self.central_widget.setLayout(self.layout_main_window)
# верхняя часть
self.frame_top = QFrame()
self.layout_top = QHBoxLayout()
self.widget = QWidget()
self.widget_layout = QVBoxLayout()
self.widget.setLayout(self.widget_layout)
for i in range(25):
self.widget_layout.addWidget(QPushButton('Строка'))
self.top_table = QTableWidget()
self.top_table.setRowCount(20)
self.layout_top.addWidget(self.widget)
self.layout_top.addWidget(self.top_table)
self.frame_top.setLayout(self.layout_top)
# нижняя часть
self.frame_bottom = QFrame()
self.layout_bottom = QVBoxLayout()
self.bot_table = QTableWidget()
self.bot_table.setRowCount(20)
self.layout_bottom.addWidget(self.bot_table)
self.frame_bottom.setLayout(self.layout_bottom)
# Splitter
self.splitter2 = QSplitter(Qt.Vertical)
self.splitter2.addWidget(self.frame_top)
self.splitter2.addWidget(self.frame_bottom)
self.layout_main_window.addWidget(self.splitter2)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())