如何滚动 'QMainWindow'
How To Scroll in 'QMainWindow'
我刚开始 learn/use 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_())
本质上,window 有一个固定大小(这里是 180x100)但有超出该大小的元素(即 button2 范围从 150 到 220,这使得它超出了 180px 的一半 window )
单击并拖动更大的 window 可以显示整个 button2,这很好,但我需要一种方法来保持 window 的大小并且只需要一个滚动条即可查看所有看不见的物品。
QScrollArea
class 提供到另一个小部件的滚动视图。
更多... 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_())
我刚开始 learn/use 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_())
本质上,window 有一个固定大小(这里是 180x100)但有超出该大小的元素(即 button2 范围从 150 到 220,这使得它超出了 180px 的一半 window )
单击并拖动更大的 window 可以显示整个 button2,这很好,但我需要一种方法来保持 window 的大小并且只需要一个滚动条即可查看所有看不见的物品。
QScrollArea
class 提供到另一个小部件的滚动视图。
更多... 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_())