scroll.setWidget(inner_widget)必须放在 inner_widget添加完内容之后。
放在之前不会有滚动条
错误示范:
贴出代码:
from sys import argv, exit
from PyQt6.QtWidgets import QWidget, QScrollArea, QVBoxLayout, QPushButton, QApplication
class MyWin(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt QScrollArea不出现滚动条,不显示内容")
self.init_ui()
def init_ui(self):
# 给自己一个布局管理器
self_layout = QVBoxLayout()
self.setLayout(self_layout)
self.setFixedWidth(500)
scroll = QScrollArea()
# 想要滚动的widget: inner_widget
inner_widget = QWidget()
inner_widget_layout = QVBoxLayout()
inner_widget.setLayout(inner_widget_layout)
# 向widget里添加60个QPushButton
for x in range(60):
inner_widget_layout.addWidget(QPushButton(str(x)))
# ☆,如果这句放在添加QPushButton前就不会有滚动条
scroll.setWidget(inner_widget)
# 添加QScrollArea
self_layout.addWidget(scroll)
self.show()
if __name__ == '__main__':
app = QApplication(argv)
win = MyWin()
exit(app.exec())