首页 > 其他分享 >13. 滑块控件

13. 滑块控件

时间:2025-01-01 18:51:44浏览次数:1  
标签:__ 控件 13 滑块 int self 设置

一、抽象滑块

  QScrollBar、QSlider 和 QDail 都是从 QAbstractSlider 类继承而来的,因此它们的多数方法是相同的。

  我们可以在终端中使用 pip 安装 pyside6 模块。

pip install pyside6

滑块控件

  QAbstractSlider 类的常用方法如下:

# 实例方法
orientation() -> Qt.Orientation                     # 获取控件方向
setInvertedAppearance(arg__1:bool) -> None          # 设置几何外观左右和上下颠倒
invertedAppearance() -> bool                        # 获取几何外观是否颠倒
setInvertedControls(arg__1:bool) -> None            # 设置键盘上的PageUp和PageDown键是否反向
invertedControls() -> bool                          # 获取是否进行逆向控制
setMinimum(arg__1:int) -> None                      # 设置最小值
minimum() -> int                                    # 获取最小值
setMaximum(arg__1:int) -> None                      # 设置最大值
maximum() -> int                                    # 获取最大值
setPageStep(arg__1:int) -> None                     # 设置每次单击滑动区域,控件值的变化量
pageStep() -> int                                   # 获取单击滑动区域,控件值的变化量
setSingleStep(arg__1:int) -> None                   # 设置单击两端的箭头或拖动滑块时,控件值的变化量
singleStep() -> int                                 # 获取单击两端的箭头或拖动滑块时,控件值的变化量
setSliderDown(arg__1:bool) -> None                  # 设置滑块是否被按下,该值的设置会影响isSliderDown()的返回值
isSliderDown() -> bool                              # 用鼠标移动滑块时,返回True,单击两端的箭头或滑动区域时,返回False
setSliderPosition(arg__1:int) -> None               # 设置滑块的位置
sliderPosition() -> int                             # 获取滑块位置
setTracking(enable:bool) -> None                    # 设置是否追踪滑块的连续变化
value() -> int                                      # 获取滑块的值


# 槽函数
setOrientation(arg__1: Qt.Orientation) -> None      # 设置控件方向,可设置为水平或垂直方向
setRange(min: int, max: int) -> None                # 设置滑块范围
setValue(arg__1:int) -> None                        # 设置滑块的值

  要改变滑块的位置或值,可以用鼠标拖动滑块的位置或单击两端的箭头,如果焦点在控件上,还可以通过键盘上的左右箭头来控制,这时值的增加或减少的步长由 setSingleStep() 方法来设置。另外还可以单击滑块的滑行轨道,或者用键盘上的 PageUp 和 PageDown 键来改变值,这时值的增加或减少的步长由 setPageStep() 方法来设置。

  如果用键盘来移动滑块的位置,滑块控件默认是不获得焦点的,可以通过 setFocusPolicy(Qt.FocusPolicy) 方法设置其能获得焦点。

  当设置 setTracking() 为 False 时,用鼠标拖动滑块连续移动时(鼠标按住不松开),控件不发送 valueChanged 信号。

  滑块常用信号及其说明如下:

actionTriggered(action:int)         # 动作触发时发射信号
rangeChanged(min:int, max:int)      # 滑块范围改变时发射信号
sliderMoved(position:int)           # 滑块移动时发射信号
sliderPressed()                     # 滑块按下时发射信号
sliderReleased()                    # 滑块释放时发射信号
valueChanged(value:int)             # 值改变时发射信号

  actionTriggered(action:int) 信号在用户用鼠标或键盘键改变滑块位置时发送,根据改变方式的不同,信号的参数值也不同,action 的值可以取值如下:

QAbstractSlider.SliderAction.SliderNoAction
QAbstractSlider.SliderAction.SliderSingleStepAdd
QAbstractSlider.SliderAction.SliderSingleStepSub
QAbstractSlider.SliderAction.SliderPageStepAdd
QAbstractSlider.SliderAction.SliderPageStepSub
QAbstractSlider.SliderAction.SliderToMinimum
QAbstractSlider.SliderAction.SliderToMaximum
QAbstractSlider.SliderAction.SliderMove

二、滑块控件

  PySide6 中提供了两个滑块控件,分别是水平滑块 HorizontalSlider 和垂直滑块 VerticalSlider,但这两个滑块控件对应的类都是 QSlider 类,该类提供一个 setOrientation(arg__1) 方法,通过设置该方法的参数,可以将滑块显示为水平或者垂直。

  用 QSlider 类创建实例对象的方法如下:

QSlider(parent:QWidget=Noone)
QSlider(orientation:Qt.Orientation, parent:QWidget=None)

  其中,parent窗口 或者 容器 类控件,Qt.Orientation 可以取 Qt.Orientation.HorizontalQt.Orientation.Vertical,表示水平和竖直。

  QSlider 滑块类的特有方法及其说明如下:

setTickInterval(ti:int) -> None                             # 设置滑块的刻度间隔
setTickPosition(position:QSlider.TickPosition) -> None      # 设置刻度的位置

  QSlider 可以设置刻度,方法是 setTickInterval(int),其中参数 int 是刻度间距。用 tickInterval() 方法可以获取刻度间距值,其中 QSlider.TickPosition 可以取值如下:

QSlider.TickPosition.NoTicks             # 不显示刻度,这是默认
QSlider.TickPosition.TicksBothSides      # 在滑块的两侧都显示刻度
QSlider.TickPosition.TicksAbove          # 在水平滑块的上方显示刻度
QSlider.TickPosition.TicksBelow          # 在水平滑块的下方显示刻度
QSlider.TickPosition.TicksLeft           # 在垂直滑块的左侧显示刻度
QSlider.TickPosition.TicksRight          # 在垂直滑块的右侧显示刻度
import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QSlider
from PySide6.QtCore import Qt

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.resize(700, 500)

        # 2.创建滑块控件
        slider = QSlider(self)
        slider.resize(500, 30)

        # 3.设置滑块范围
        slider.setRange(0, 100)

        # 4.设置滑块的当前值
        slider.setValue(50)

        # 5.设置滑块的布局方向
        slider.setLayoutDirection(Qt.LayoutDirection.LayoutDirectionAuto)

        # 6.设置滑块的显示方向
        slider.setOrientation(Qt.Orientation.Horizontal)

        # 7.设置滑块是否以反方向显示进度
        slider.setInvertedAppearance(False)

        # 8.设置步长
        slider.setPageStep(5)
        slider.setSingleStep(5)

        # 9.设置滑块的刻度间隔
        slider.setTickInterval(5)

        # 10.设置滑块刻度的标记位置
        slider.setTickPosition(QSlider.TickPosition.TicksBelow)

        # 11.获取滑块的最小值,最大值和当前值
        print(slider.minimum(), slider.maximum(), slider.value())

        # 12.信号与槽的绑定
        slider.actionTriggered.connect(self.actionTriggered)
        slider.sliderMoved.connect(self.sliderMoved)
        slider.sliderPressed.connect(self.sliderPressed)
        slider.sliderReleased.connect(self.sliderReleased)
        slider.valueChanged.connect(self.valueChanged)

    def actionTriggered(self, action):
        print("滑块被拖动了,当前改变方式的索引为:", action)

    def sliderMoved(self, value):
        print("滑块被移动了,被移动到", value)

    def sliderPressed(self):
        print("滑块被按下了")

    def sliderReleased(self):
        print("滑块被释放了")

    def valueChanged(self, value):
        print("滑块的值被改变了,改变后的值", value)

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())

三、滚动条控件

  PySide6 中提供了两个滚动条控件,分别是水平滚动条(HorizontalScrollBar)和垂直滚动条(VericalScrollBar),但两个滚动条控件对应的类都是 QScrollBar 类,这两个控件通过水平或者垂直的滚动条可以扩大当前窗口的有效装载面积,从而装在更多的控件。

  用 QScrollBar 类创建实例对象的方法如下:

QScrollBar(parent:QWidget=Noone)
QScrollBar(orientation:Qt.Orientation, parent:QWidget=Noone)

  其中,parent窗口 或者 容器 类控件,Qt.Orientation 可以取 Qt.Orientation.HorizontalQt.Orientation.Vertical,表示水平和竖直。

import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QScrollBar
from PySide6.QtCore import Qt

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.resize(700, 500)

        # 2.创建滚动条控件
        scrollBar = QScrollBar(Qt.Orientation.Vertical, self)
        scrollBar.setFixedSize(10, 300)

        # 3.设置滚动条的范围
        scrollBar.setRange(0, 100)

        # 4.设置滚动条的值
        scrollBar.setValue(70)

        # 5.获取滚动条的值
        print(scrollBar.value())

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())

四、旋钮控件

  旋钮控件(QDail)本质上类似于一个滑块控件,只是显示的样式不同。

  用 QDail 类创建实例对象的方法如下:

QDail(parent:QWidget=Noone)

  其中,parent窗口 或者 容器 类控件。

  QDail 类的特有方法及其说明如下:

# 实例方法
notchesVisible() -> bool                        # 获取刻度是否可见
setNotchTarget(target:float) -> None            # 设置刻度之间的距离
notchTarget() -> float                          # 获取刻度之间的距离
wrapping() -> bool                              # 获取最大值和最小值刻度是否重合
notchSize() -> float                            # 获取相邻刻度之间的值

# 槽函数
setNotchesVisible(visible:bool) -> None         # 设置刻度是否可见
setWrapping(on:bool) -> None                    # 设置最大值和最小值刻度是否重合
import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QDial

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.resize(700, 500)

        # 2.创建旋钮控件
        dial = QDial(self)
        dial.setFixedSize(100, 100)

        # 3.设置旋钮范围
        dial.setRange(0, 100)

        # 4.设置是否显示刻度
        dial.setNotchesVisible(True)

        # 5.设置刻度的最小值和最大值是否重合
        dial.setWrapping(True)

        # 6.信号与槽的绑定
        dial.sliderMoved.connect(self.sliderMoved)
        dial.sliderPressed.connect(self.sliderPressed)
        dial.sliderReleased.connect(self.sliderReleased)
        dial.valueChanged.connect(self.valueChanged)

    def sliderMoved(self, value):
        print("滑块被移动了,被移动到", value)

    def sliderPressed(self):
        print("滑块被按下了")

    def sliderReleased(self):
        print("滑块被释放了")

    def valueChanged(self, value):
        print("滑块的值被改变了,改变后的值", value)

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())

标签:__,控件,13,滑块,int,self,设置
From: https://www.cnblogs.com/FlurryHeart/p/18646186

相关文章

  • 第13章 诊断
    第13章诊断13.1条件编译预编译的指令见4.16预处理指令,我们这里的条件编译用到的指令有:​#if​​、#else​​、#endif​​、#elif​​条件编译指令可以进行与​&&​​、或​||​​、非​!​运算。预定义指令可以通过三种方式定义:在文件中通过​#define​......
  • 记录学习使用stylecontrols5.8控件的几个坑(二)
    坑2:使用scDBImage显示数据库图片,当DBImageZhaoPian.Picture.LoadFromFile(opd.FileName);//或者TBlobField(dm.FDQPerson.FieldByName('照片')).LoadFromStream(ms);//或TBlobField(dm.FDQPerson.FieldByName('照片')).LoadFromfile(filename);之后,scdbimage能显示图片,当执......
  • 【自定义控件】Qt/C++ 双侧聊天对话框控件
    1.项目简介本项目实现了一个基于Qt的双侧对话框控件,用于模拟聊天窗口。支持动态添加文字和图片消息,并实现消息的左右对齐、头像和用户名显示、时间戳显示等功能。用户还可以自定义背景颜色、背景图片、字体样式和字体颜色。可控件提升直接使用可联系博主获取源码发......
  • Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现13
    前言2009年9月Spring3.0RC1发布后,Spring就引入了SpEL(SpringExpressionLanguage)。对于开发者而言,引入新的工具显然是令人兴奋的,但是对于运维人员,也许是噩耗的开始。类比Struts2框架,会发现绝大部分的安全漏洞都和ognl脱不了干系。尤其是远程命令执行漏洞,占据了多少甲方乙方......
  • 第13章 多情刺客无情剑
    上次说到豫让第一次行刺,赵无恤未被刺中,但他没要豫让的命,而是把豫让放走了。为什么赵无恤会放走豫让呢?因为赵无恤最看重的是臣子对上级的忠贞,所以要对他网开一面。想当初晋阳城被围得水泄不通的时候,赵家危在旦夕,赵无恤手下很多人都丧失了信心,都想投敌,见了赵无恤,连礼数上都变得怠......
  • 12. 日历控件
    一、日历类  日历类QCalendar主要用于确定纪年法,当前通用的是公历纪年法,这也是默认值。QCalendar类在PySide6.QtCore模块中。  我们可以在终端中使用pip安装pyside6模块。pipinstallpyside6  用QCalendar类创建日历实例的方法如下:QCalendar()QCalendar(......
  • 11.13
    微软官方博客公布了MSEdge浏览器过去一年的一系列统计数字:用户完成了逾百亿次AI聊天;自动翻译了38万亿个字;休眠标签节省了7万亿MB内存;在MSN上每天浏览了逾8亿篇文章;使用Drop跨设备共享了4600万条消息和文件;Bing日活用户逾1.4亿;移动应用屏蔽了逾1.8万亿个跟......
  • hot100-一刷-13堆(共3道题)
    215.数组中的第K个最大元素题目链接题目描述代码实现分析:后面可以看下官方题解的,手动写排序或者大顶堆。代码:classSolution{publicintfindKthLargest(int[]nums,intk){PriorityQueue<Integer>pq=newPriorityQueue<>((n1,n2)->n1-n2);......
  • [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(00):iced简单窗口的实现以及在窗口显
    前言本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发。iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动。本合集是基于新版本的关于分部件(widget)的使用介绍,包括源代码介绍、实例使用等。环境配置系统:window10平台:visualstudiocode语言:rust......
  • WPF使用TreeView和TabControl控件jian实现菜单的选择和切换
    一、页面添加TreeView和TabControl控件1.在MainWindow.xaml页面上添加TreeView控件,设置ItemsSource属性为ViewModel中的TreeList属性,添加<TreeView.ItemTemplate>,在该节点下添加<HierarchicalDataTemplate>,绑定ViewModel中的TreeList下子项中的Children属性,菜单名称绑定Header......