本文共 3075 字,大约阅读时间需要 10 分钟。
QDockWidget是一个可以停靠在QMainWidget内的窗口控件,它可以保持在浮动状态或者指定位置作为子窗口添加到主窗口中,QMainWidget类的主窗口对象保留有一个用于停靠窗口的区域。
QDockWidget类中的常用方法
方法 | 描述 |
---|---|
setWidget() | 在Dock窗口区域设置QWidget |
setFloating() | 设置Dock窗口是否可以浮动,如果设置为True,则表示可以浮动 |
setAllowedAreas() | 设置窗口可以停靠的区域:LeftDockWidgetArea(左边停靠区域)、RightDockWidgetArea(右边停靠区域)、TopDockWidgetArea(顶部停靠区域)、BottomDockWidgetArea(底部停靠区域)、NoDockWidgetArea(不显示Widget) |
setFeatures() | 设置停靠窗口的功能属性:DockWidgetClosable(可关闭)、DockWidgetMovable(可移动)、DockWidgetFloatable(可漂浮)、DockWidgetVerticalTitleBar(在左边显示垂直的标签栏)、AllDockWidgetFeatures(具有前三种属性的所有功能)、NoDockWidgetFeatures(无法关闭,不能移动,不能漂浮) |
QDockWidget的使用
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QMainWindow): def __init__(self): super().__init__() self.setGeometry(100, 50, 500, 400) self.setWindowTitle('QDockWidget的使用') layout = QHBoxLayout() bar = self.menuBar() file = bar.addMenu('File') file.addAction("New") file.addAction("Save") file.addAction("Quit") #创建停靠窗口 self.items = QDockWidget('Dockable',self) self.listwidget = QListWidget() self.listwidget.addItem("item1") self.listwidget.addItem("item2") self.listwidget.addItem("item3") self.items.setWidget(self.listwidget) self.items.setFloating(False) self.setCentralWidget(QTextEdit()) self.addDockWidget(Qt.RightDockWidgetArea,self.items) self.setLayout(layout)if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.show() sys.exit(app.exec_())
运行效果如下:
QScrollBar提供了水平的或垂直的滚动条,可以扩大当前窗口的有效装载面积。
QScrollBar类中的常用信号
信号 | 含义 |
---|---|
valueChanged | 当滑动条的值改变时发射此信号 |
sliderMoved | 当用户拖动滑块时发射此信号 |
QScrollBar的使用
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QWidget): def __init__(self): super().__init__() self.setGeometry(100, 50, 500, 400) self.setWindowTitle('QScrollBar的使用') layout = QHBoxLayout() self.l1 = QLabel('拖动滑块改变颜色') self.l1.setFont(QFont('Arial',16)) layout.addWidget(self.l1) self.s1 = QScrollBar() self.s1.setMaximum(255) self.s1.sliderMoved.connect(self.sliderval) self.s2 = QScrollBar() self.s2.setMaximum(255) self.s2.sliderMoved.connect(self.sliderval) self.s3 = QScrollBar() self.s3.setMaximum(255) self.s3.sliderMoved.connect(self.sliderval) layout.addWidget(self.s1) layout.addWidget(self.s2) layout.addWidget(self.s3) self.setLayout(layout) def sliderval(self): print(self.s1.value(),self.s2.value(),self.s3.value()) palette = QPalette() c = QColor(self.s1.value(),self.s2.value(),self.s3.value(),255) palette.setColor(QPalette.Foreground,c) self.l1.setPalette(palette) if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.show() sys.exit(app.exec_())
运行效果如下:
转载地址:http://ntozi.baihongyu.com/