10. 组合框控件

news/2024/12/27 19:37:49/文章来源:https://www.cnblogs.com/FlurryHeart/p/18636596

一、组合框控件

  组合框控件主要以列表形式为用户提供选择的项目,用户可以从中选择项。PySide6 中常用的列表类控件主要有 QComboBox(下拉组合框控件)、QFontComBox(字体组合框控件)。

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

pip install pyside6

组合框类控件

二、下拉组合框控件

  下拉组合框控件可以看成是一个 QLineEdit 和一个 列表控件 的组合体,每行除有必要的文字外,还可以设置图标。当单击下拉列表框时,下拉列表框呈展开状态,显示多行选项供用户选择,根据用户选择的内容发送信号,进行不同的动作。通常下拉列表框处于折叠状态,只显示一行当前内容。QComboBox 除了显示可见的文字和图标外,还可以给每行设置一个关联数据,数据类型任意,可以是字符串、文字、图片、类的实例等。通过客户选择的内容,可以读取关联的数据。

  用 QComboBox 类创建实例对象的方法如下。

QComboBox(parent:QWidget=None)

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

  QComboBox 由一列多行内容构成,每行称为一个项(item)。QComboBox 的方法主要是有关项的方法,可以添加项、插入项和移除项。

# 实例方法
addItem(text:str, userData:Any=None) -> None                                    # 增加一个选项
addItem(icon:QIcon, text:str, userData:Any=None) -> None                        # 增加一个选项
addItems(texts:Sequence[str]) -> None                                           # 增加多个选项insertItem(index:int, text:str, userData:Any=None) -> None                      # 插入一个选项
insertItem(index:int, icon:QIcon, text:str, userData:Any=None) -> None          # 插入一个选项
insertItems(index:int, texts:Sequence[str]) -> None                             # 插入多个选项removeItem(index:int) -> None                                                   # 删除一个选项count() -> int                                                                  # 获取选项数量
currentIndex() -> int                                                           # 获取当前选项索引
currentText() -> str                                                            # 获取当前选项文本setEditable(editable:bool) -> None                                              # 设置是否可编辑
setIconSize(size:QSize) -> None                                                 # 设置图标大小
setInsertPolicy(policy:QComboBox.InsertPolicy) -> None                          # 设置插入策略
setItemData(index:int, value:Any, role:Qt.ItemDataRole=Qt.UserRole) -> None     # 设置选项数据
setItemIcon(index:int, icon:QIcon) -> None                                      # 设置选项图标
setItemText(index:int, text:str) -> None                                        # 设置选项文本
setMaxCount(max:int) -> None                                                    # 设置最大选项数量
setMaxVisibleItems(maxItems:int) -> None                                        # 设置最大可见选项数量,超过显示滚动条
setMinimumContentsLength(characters:int) -> None                                # 设置最小内容长度
setSizeAdjustPolicy(policy:QComboBox.SizeAdjustPolicy) -> None                  # 设置尺寸调整策略
setValidator(v:QValidator) -> None                                              # 设置验证器currentData(role:Qt.ItemDataRole=Qt.UserRole) -> Any                            # 获取当前选项数据
iconSize() -> QSize                                                             # 获取图标大小
itemIcon(index:int) -> QIcon                                                    # 获取选项图标
itemText(index:int) -> str                                                      # 获取选项文本
itemData(index:int, role:Qt.ItemDataRole=Qt.UserRole) -> Any                    # 获取选项数据showPopup() -> None                                                             # 显示下拉列表
hidePopup() -> None                                                             # 隐藏下拉列表# 槽函数
setCurrentText(text:str) -> None                                                # 设置当前选项文本
setCurrentIndex(index:int) -> None                                              # 设置当前选项索引
setEditText(text:str) -> None                                                   # 设置编辑框文本
clear() -> None                                                                 # 清空选项
clearEditText() -> None                                                         # 清空编辑框文本

  在 QComboBox 控件中添加项的方法有 addItem(str,userData=None)addItem(QIcon,str,userData=None)addItems(Sequence[str]),前两种只能逐个增加,最后一种可以把一个元素是字符串的迭代序列(列表、元组)加入到 QComboBox 中。前两种在增加项时,可以为项关联任何类型的数据。

  在 QComboBox 控件中插入项的方法有 insertItem(index:int,str,userData=None)insertItem(index:int,QIcon,str,userData=None)insertItems(index:int,Sequence[str])。当插入项时,用 setInsertPolicy(QComboBox.InsertPolicy) 方法可以设置插入项的位置,其中 QComboBox.InsertPolicy 的取值如下所示。

QComboBox.InsertPolicy.NoInsert                  # 不允许插入项
QComboBox.InsertPolicy.InsertAtTop               # 在顶部插入项
QComboBox.InsertPolicy.InsertAtBottom            # 在底部插入项
QComboBox.InsertPolicy.InsertAtCurrent           # 在当前项之前插入项
QComboBox.InsertPolicy.InsertBeforeCurrent       # 在当前项之前插入项
QComboBox.InsertPolicy.InsertAfterCurrent        # 在当前项之后插入项
QComboBox.InsertPolicy.InsertAlphabetically      # 按字母顺序插入项

  用 removeItem(index:int) 方法可以从列表中 移除指定索引值的项;用 clear() 方法可以 清除所有的项;用 clearEditText() 方法可以 清除显示的内容,而不影响项。

  通过设置 setEditable(True),即 QComboBox 是可编辑状态,可以输入文本,按 Enter 键后文本将作为项插入列表中。

  在添加和插入项时,可以定义关联的数据,另外也可以用 setItemData(index:int,any,role=Qt.UserRole) 方法为索引号是 int 的项追加关联的数据,数据类型任意。可以为项定义多个关联数据,第 1 个数据的角色值 role=Qt.UserRole(Qt.UserRole 的值为 256),当追加第 2 个关联的数据时,取 role=Qt.UserRole+1,追加第 3个关联的数据时取role=Qt.UserRole+2,依次类推。用 currentData(role=Qt.UserRole+i)itemData(index:int,role=Qt.UserRole+i) 方法获取关联的数据,其中 role=Qt.UserRole+i 表示第 i 个关联数据的索引,i=0,1,2,…。

  利用 setSizeAdjustPolicy(QComboBox.SizeAdjustPolicy) 方法可以设置 QComboBox 的宽度和高度根据项的文字的长度进行调整,其中 QComboBox.SizeAdjustPolicy 可以取值如下:

QComboBox.AdjustToContents                             # 根据内容调整
QComboBox.AdjustToContentsOnFirstShow                  # 根据第1次显示的内容调整
QComboBox.AdjustToMinimumContentsLengthWithIcon        # 根据最小长度调整

  QComboBox 控件常用信号及其说明如下:

activated(index:int)                # 索引激活时发射信号
currentIndexChanged(index:int)      # 当前索引改变时发射信号
currentTextChanged(text:str)        # 当前文本改变时发射信号
editTextChanged(text:str)           # 编辑文本改变时发射信号
highlighted(index:int)              # 高亮显示当前索引的行
textActivated(text:str)             # 文本被激活时发射信号
textHighlighted(text:str)           # 文本被高亮时发射信号
import sysfrom PySide6.QtGui import QIcon
from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QComboBoxclass 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.创建下拉组合框控件对象comboBox = QComboBox(self)comboBox.resize(100, 30)# 3.添加下拉列表项comboBox.addItem("木之本樱")comboBox.addItems(["御坂美琴", "夏娜", "赤瞳", "黑瞳"])# 4.获取选中项的文本和索引print(comboBox.currentText(), comboBox.currentIndex())# 5.获取所有选项的数量print(comboBox.count())# 6.获取指定索引的文本print(comboBox.itemText(2))# 7.设置指定是索引的图标comboBox.setItemIcon(0, QIcon("1.ico"))# 8.允许通过文本框添加数据comboBox.setEditable(True)# 9.设置最大可选项数量,超过部分显示滚动条comboBox.setMaxVisibleItems(3)# 10.定义信号与槽的连接comboBox.currentTextChanged.connect(self.currentTextChanged)comboBox.textActivated.connect(self.textActivated)comboBox.editTextChanged.connect(self.editTextChanged)comboBox.textHighlighted.connect(self.textHighlighted)def currentTextChanged(self, text):print("选择的项改变了,文本内容为:", text)def textActivated(self, text):print(f"【{text}】文本项被激活了")def editTextChanged(self, text):print("你编辑了文本,编辑后的内容为:", text)def textHighlighted(self, text):print(f"你高亮选择了 {text} 文本 ")if __name__ == "__main__":# 1.创建一个QApplication类的实例app = QApplication(sys.argv)# 2.创建一个窗口window = MyWidget()# 3.展示窗口window.show()# 4.进入程序的主循环并通过exit()函数确保主循环安全结束sys.exit(app.exec())

三、字体组合框控件

  PySide6 专门定义了一个字体下拉列表框控件 QFontComboBox,列表内容是操作系统支持的字体,这个控件主要用在工具栏中,用于选择字体。QFontComboBox 继承自 QComboBox,因此具有 QComboBox 的方法。另外 QFontComboBox 也有自己的方法。

# 实例方法
currentFont() -> QFont                                      # 获取当前字体
setFontFilters(filter:QFontComboBox.FontFilter) -> None     # 设置字体列表的过滤器# 槽函数
setCurrentFont(font:QFont) -> None                          # 设置当前的字体

  其中字体过滤器可以取值如下:

QFontComboBox.FontFilter.AllFonts               # 所有字体
QFontComboBox.FontFilter.ScalableFonts          # 可以自动伸缩的字体
QFontComboBox.FontFilter.NonScalableFonts       # 不自动伸缩的字体
QFontComboBox.FontFilter.MonospacedFonts        # 等宽字体
QFontComboBox.FontFilter.ProportionalFonts      # 比例字体
import sysfrom PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QFontComboBox, QLabel
from PySide6.QtGui import QFontclass MyWidget(QWidget):def __init__(self):# 1.调用父类Qwidget类的__init__()方法super().__init__()# 2.调用setupUi()方法初始化页面self.setup_ui()def setup_ui(self):# 1.设置窗口对象大小self.resize(700, 500)# 4.创建字体组合框框控件对象fontComboBox = QFontComboBox(self)fontComboBox.resize(300, 30)# 6.获取选中项的文本和索引print(fontComboBox.currentText(), fontComboBox.currentIndex())# 7.获取所有选项的数量print(fontComboBox.count())# 8.设置字体组合框中字体样式fontComboBox.setFontFilters(QFontComboBox.FontFilter.AllFonts)# 创建标签组件self.label = QLabel("你好,小樱(Sakura)", self)self.label.setGeometry(0, 50, 150, 30)# 定义信号与槽的连接fontComboBox.currentTextChanged.connect(self.set_font)def set_font(self, font):# 选中的字体print(font)# 为label设置字体self.label.setFont(QFont(font))if __name__ == "__main__":# 1.创建一个QApplication类的实例app = QApplication(sys.argv)# 2.创建一个窗口window = MyWidget()# 3.展示窗口window.show()# 4.进入程序的主循环并通过exit()函数确保主循环安全结束sys.exit(app.exec())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860002.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git review错误: is not registered in your account, and you lack forge committer permission

肉眼看上去,远端的邮箱和自己输入的邮箱是一致的 罪魁祸首是 git commit --amend 里面的邮箱带了中文引号,导致本地和远端邮箱名称不一致 从git review 命令报错email address那一行的奇怪字符可以看出端倪如上图所示,引号不是标准的linux字符

2.1基本选择器

选择器: 作用:选择页面上的某一个或者某一类元素 2.1基本选择器:1.标签选择器:选择一类标签 2.类选择器 class:选中所有class属性一致的标签(可以跨标签) .class名称{} 3.id选择器:id全局唯一 #id名称{} 不遵循就近原则:id>class>标签

痞子衡嵌入式:MCUXpresso for VS Code开发环境搭建及SDK工程导入

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpresso for VS Code开发环境搭建及SDK工程导入。MCUXpresso IDE(包括其前身 LPCXpresso IDE、Kinetis Design Studio)是恩智浦软件团队持续开发了十多年的免费集成开发环境,现在功能已经相当完善,IDE…

3.选择器

选择器: 作用:选择页面上的某一个或者某一类元素 3.1基本选择器:1.标签选择器:选择一类标签 2.类选择器 class:选中所有class属性一致的标签(可以跨标签) .class名称{} 3.id选择器:id全局唯一 #id名称{} 不遵循就近原则:id>class>标签

2.CSS的三种导入方式

1.标签内部 2.head里面 3.css文件 1.链接式:html2.导入式:CSS2.1特有 优先级:行内样式>内部样式=外部样式(后导入的覆盖前导入的--就近原则)

谷歌Pixel 2 刷安卓10系统 APatch获取Root权限

事前准备手机需要解Bootloader锁 , 打开OEM解锁,开启USB调试链接电脑下载Platform-Tools # 地址 https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn检查是否需要需要安装Android驱动刷机下载先刷机包 https://developers.google.cn/android/image…

六、汇编实战

打印:hello world 在屏幕上输出字符 mov dl,a ; 将要打印的字符放到dl中 mov ah, 02h ; 设置显示字符的功能号 int 21h ; 调用DOS中断,打印字符在屏幕上输出字符串 mov ah,09h ;设置显示字符串的功能号 int 21H …

可信执行环境

一、隐私计算与可信执行环境 1. 背景:随着云计算和大数据的普及,用户之间需要进行隐私数据的共享与协作,这些数据被上传到云端进行计算和处理。 但是,由于隐私数据交由不可信的第三方存储和管理,用户隐私数据面临被泄露的风险,公民的生命和财产安全乃至国家的安全都受到不…

Foldermove 轻松地把电脑里的软件搬到另一个硬盘,甚至是U盘里

Foldermove 大家好,今天我要介绍一个超实用的小工具,它能让你轻松地把电脑里的软件搬到另一个硬盘,甚至是U盘里,听起来是不是很酷? ●软件简介 软件名:FolderMove 体积:只有201kb,轻得像羽毛。 版本:v3.0 适用系统:Windows ●使用体验 这个小工具,体积小到几乎可以…

ping 工具的使用

一、ping基本使用详解在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为:1、用来检测网络的连通情况和分析网络速度2、根据域名得到服务器IP3、根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。 bytes值:数据包大小,也就是字节。 time值:响…

二维、三维组件融合 720三维全景沉浸式实景体验

本系统通过数字孪生技术,实现小区楼盘系统的可视化展示,整合楼盘内各个系统的数据源,将楼盘模型与房间模型、720三维全景图相结合,实现了从楼盘周边到室内布局的全方位展示,为购房者提供全方位的可视化信息。整个项目分为四个功能模块,分别为楼盘概览、楼盘规划、归家动线…

2024-2025-1 20241318 《计算机基础与程序设计》第十四周学习总结

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP(这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14这个作业的目标 <学习《C语言程序设计》第13-14章并完成云班课测试>作业正文 https://i.cnblogs.com/posts/edi…