我刚刚开始学习/使用 PyQt,并且在寻找如何向这个简单程序添加滚动条时遇到一些问题:
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300,300,180,100)
self.button1= QPushButton(self)
self.button1.setText("Button 1")
self.button1.move(10,10)
self.button2= QPushButton(self)
self.button2.setText("Button 2")
self.button2.move(150,10)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
本质上,窗口有一个固定的大小(这里是 180x100),但有超出该大小的元素(即,button2 的范围从 150 到 220,这使得它有一半在 180px 窗口之外)
单击并拖动窗口放大显示整个按钮2,这很好,但我需要一种方法来保持窗口的大小,并且只有一个滚动条来查看所有看不见的项目。
QScrollArea
类提供了另一个小部件的滚动视图。
更多... https://doc.qt.io/qt-5/qscrollarea.html
滚动区域用于显示框架内子部件的内容。 如果小部件超出框架的大小,视图可以提供滚动条,以便 可以查看子部件的整个区域。 子部件必须用
setWidget()
指定。
import sys
from PyQt5.Qt import *
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 180, 100)
self.scroll = QScrollArea()
self.widget = QWidget()
self.widget.resize(280, 200)
self.scroll.setWidget(self.widget)
self.button1= QPushButton(self.widget)
self.button1.setText("Button 1")
self.button1.move(10, 10)
self.button2= QPushButton(self.widget)
self.button2.setText("Button 2")
self.button2.move(150, 10)
self.setCentralWidget(self.scroll)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())