PyQt5之停靠控件和滚动条控件

PyQt5之停靠控件和滚动条控件

一、QDockWidget停靠控件

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 sys
from PyQt5 import QtCore
from 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提供了水平的或垂直的滚动条,可以扩大当前窗口的有效装载面积。

QScrollBar类中的常用信号

信号含义
valueChanged当滑动条的值改变时发射此信号
sliderMoved当用户拖动滑块时发射此信号

QScrollBar的使用

import sys
from PyQt5 import QtCore
from 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_())

运行效果如下:

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值