From 8caaaad304f0269fb89de6151d5a241cec68ce60 Mon Sep 17 00:00:00 2001 From: muzing Date: Tue, 12 Jul 2022 09:32:16 +0800 Subject: [PATCH] Add 03-06-03 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QAbstractScrollArea-滚动条控件、角落控件 --- .../03-QAbstractScrollArea-滚动条控件、角落控件.py | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 03-QtWidgets-常用控件/06-QAbstractScrollArea-滚动区域的基类/03-QAbstractScrollArea-滚动条控件、角落控件.py diff --git a/03-QtWidgets-常用控件/06-QAbstractScrollArea-滚动区域的基类/03-QAbstractScrollArea-滚动条控件、角落控件.py b/03-QtWidgets-常用控件/06-QAbstractScrollArea-滚动区域的基类/03-QAbstractScrollArea-滚动条控件、角落控件.py new file mode 100644 index 0000000..1472483 --- /dev/null +++ b/03-QtWidgets-常用控件/06-QAbstractScrollArea-滚动区域的基类/03-QAbstractScrollArea-滚动条控件、角落控件.py @@ -0,0 +1,68 @@ +import sys + +from PySide6 import QtGui, QtWidgets +from PySide6.QtCore import Qt + +""" +QAbstractScrollArea 滚动条控件、角落控件 + +作为一个复合控件,QAbstractScrollArea 可以单独设置和获取其中的水平滚动条、 +垂直滚动条、位于两个滚动条之间的角落控件 +QScrollBar 官方文档:https://doc.qt.io/qtforpython/PySide6/QtWidgets/QScrollBar.html + + +.setHorizontalScrollBar(scrollbar: QScrollBar) 设置水平滚动条 +.setVerticalScrollBar(scrollbar: QScrollbar) 设置垂直滚动条 +.horizontalScrollBar() -> QScrollBar 获取水平滚动条 +.verticalScrollBar() -> QScrollBar 获取垂直滚动条 + +.addScrollBarWidget(widget: QWidget, alignment: Qt.Alignment) 在指定的对齐方式的位置添加控件作为滚动条控件 +.scrollBarWidgets(alignment: Qt.Alignment) -> List[QWidget] 返回当前设置的滚动条控件的列表 + +.setCornerWidget(widget: QWidget) 设置角落控件 +.cornerWidget() -> QWidget 获取角落控件 + +""" + + +class Window(QtWidgets.QScrollArea): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.setWindowTitle("QAbstractScrollArea-滚动条与角落控件") + self.resize(800, 600) + self.setup_ui() + self.test_01() + self.test_02() + + def setup_ui(self) -> None: + """设置界面""" + self.resize(600, 400) + self.move(100, 100) + self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn) + self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) + image_label = QtWidgets.QLabel(self) + image_label.setPixmap(QtGui.QPixmap("../../Resources/Images/Python-code.jpg")) + self.setWidget(image_label) + + def test_01(self) -> None: + """测试设置滚动条功能""" + scrollbar = QtWidgets.QScrollBar(self) # 创建自己的进度条控件 + self.setVerticalScrollBar(scrollbar) # 将该进度条控件设置给self + + hsb = self.horizontalScrollBar() # 获取水平进度条 + hsb.setValue(500) # 设置位置为100(默认为0) + + def test_02(self) -> None: + """测试设置角落控件功能""" + label = QtWidgets.QLabel(self) + label.setPixmap(QtGui.QPixmap("../../Resources/Icons/Python_128px.png")) + label.setScaledContents(True) + self.setCornerWidget(label) # 水平滚动条与垂直滚动条之间的角落显示该图标 + print(self.cornerWidget()) # 获取角落控件 + + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec())