6、Qt-pyqt6常用基本控件 - 选择列表类控件

news/2025/3/17 22:43:20/文章来源:https://www.cnblogs.com/littlecc/p/18341766
  • 选择列表类控件主要以列表形式为童虎提供选择的项目,用户可以从中选择项
  • 此选项在QTDesigner的:Input Widgets
  1. ComboBox
  2. FontComBoBox
  3. ListWidget

🎣 1.ComboBox 下拉框

常用的方法:

方法 说明
addItem() 添加一个下拉表选项
addItems() 从列表中给添加下拉选项
currentText() 获取选中项的文本
currentIndex() 获取选中项的索引
ItemText(index) 获取索引为index的项的文本
setItemText(index, text) 设置索引为index的项的文本
count() 获取所有选项的数量
clear() 清除所有选项

代码如下:

combobox.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Form</class><widget class="QWidget" name="Form"><property name="geometry"><rect><x>0</x><y>0</y><width>400</width><height>300</height></rect></property><property name="windowTitle"><string>Form</string></property><widget class="QComboBox" name="comboBox"><property name="geometry"><rect><x>150</x><y>110</y><width>69</width><height>22</height></rect></property><property name="currentText"><string/></property><property name="placeholderText"><string/></property></widget></widget><resources/><connections/>
</ui>

combobox.py

# Form implementation generated from reading ui file 'combobox.ui'
#
# Created by: PyQt6 UI code generator 6.4.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt6 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 300)self.comboBox = QtWidgets.QComboBox(parent=Form)self.comboBox.setGeometry(QtCore.QRect(150, 110, 69, 22))self.comboBox.setCurrentText("")self.comboBox.setPlaceholderText("")self.comboBox.setObjectName("comboBox")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))

main.py

from PyQt6.QtGui import QIntValidator, QIcon
from PyQt6.QtWidgets import QApplication, QLabel
from PyQt6 import uic, QtGui
import sysif __name__ == '__main__':app = QApplication(sys.argv)    # 创建应用程序对象# 加载ui文件 ,ui变量相当于是LinrText.py文件中的setupUi函数ui = uic.loadUi('./combobox.ui')# 获取comboBox控件mycomboBox = ui.comboBox# 添加comboBox控件的选项,下拉框选项mycomboBox.addItem("python")    # 添加一个选项mycomboBox.addItems(["java", "c++", "c#", "php"])   # 添加多个选项# 给选项添加icon图标mycomboBox.addItem(QIcon('qq登录.png'), "qq")# 获取当前选中的选项文本print(mycomboBox.currentText())# 获取当前选中的选项索引print(mycomboBox.currentIndex())#获取选中索引的值print(mycomboBox.itemText(2))   # 获取索引为2的选项文本# 设置索引的值mycomboBox.setItemText(2, "javaScript")# 统计选项个数print(mycomboBox.count())# 显示窗口(将ui文件内容显示)ui.show()sys.exit(app.exec())    # app.exec()进入无限消息循环,监听用户动作


🌀 2.FontComboBox 字体组合框控件

主要用于在下拉框组合框中显示并选择字体
继承于QComboBox,拥有三个属性:writingSystem,fontFilters,currentFont

  • writingSystem:是书写系统,书写系统包括一个或多个文字集和一系列规则,一个书写系统至少对应一种语言,可以用书写系统的符号集合和规则,比如 拼写规则,大小写等来表达对应的语言。如汉字,日文,罗马字等

  • fontFilters:是字体过滤器,以QFontComboBox类中提供了一个setFontFilters()方法,用来设置可以选择的字体,该方法的参数值及索命如下:

  • currentFont:当前字体设置样式

案例


🌈 3.List Widget 列表控件 (在 Item Widgets(Item-based)中)

PyQt6 提供了两种列表,分别是QList WidgetQList View 其中,QListView是基于模型的,他是QListWidget的父类
使用QListView时,首先需要建立模型,然后再保存数据
QListWidgetQListView的升级版本,他已经内置了一个数据存储模型QListWidgetItem,我们再使用时,不必自己建立模型,而直接使用addItem()或者addItems()方法即可添加列表选项
所以在实际开发时推荐使用QListWidget控件作为列表

QListWidget 常用方法:

方法 说明
addItem() 像列表中添加项
addItems() 一次向列表中添加多项
insertItem() 在指定索引处插入项
setCurrentItem() 设置当前选择项
item.isSelected() 判断是否选中
setSelectionMode() 设置列表的选择模式,支持以下5种模式:
QAbstrctItemView.NoSelection:不能选择;
QAstractItemView.SingleSelection:单选;
QAbstractItemView.MultiSelection:多选;
QAbstractItemView.ExtendedSelection:正常单选,按Ctrl或者Shift后可以多选;
QAbstractItemView.ContiguousSelection:与ExtendedSelection类似
setSlectionBehavior() 设置选择项的方式,支持以下3种方式:
QAbstractItemView.SelectItems:选中当前项;
QAbstractItemView.SelctRows:选中整行;
QAbstractItemView.SelectColumns:选中整列
setWordWrap() 设置是否自动换行,True表示自动换行,False表示不自动换行
setViewMode() 设置显示模式,以下有两种模式:
QListView.ListMode:以列表形式显示;
QListView.IconMode:以图标形式显示
item.text() 获取选项的文本
clear() 清除所有列表选项

案例如下:

画一个

listwidget.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Form</class><widget class="QWidget" name="Form"><property name="geometry"><rect><x>0</x><y>0</y><width>400</width><height>300</height></rect></property><property name="windowTitle"><string>Form</string></property><widget class="QListWidget" name="listWidget"><property name="geometry"><rect><x>40</x><y>50</y><width>301</width><height>161</height></rect></property><property name="selectionMode"><enum>QAbstractItemView::MultiSelection</enum></property><property name="wordWrap"><bool>true</bool></property></widget></widget><resources/><connections/>
</ui>

listwidget.py

# Form implementation generated from reading ui file 'listwidget.ui'
#
# Created by: PyQt6 UI code generator 6.4.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt6 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 300)self.listWidget = QtWidgets.QListWidget(parent=Form)self.listWidget.setGeometry(QtCore.QRect(40, 50, 301, 161))self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.MultiSelection)self.listWidget.setWordWrap(True)self.listWidget.setObjectName("listWidget")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))

main.py

from PyQt6.QtGui import QIntValidator, QIcon
from PyQt6.QtWidgets import QApplication, QLabel, QListWidgetItem
from PyQt6 import uic, QtGui
import sysif __name__ == '__main__':app = QApplication(sys.argv)    # 创建应用程序对象# 加载ui文件 ,ui变量相当于是LinrText.py文件中的setupUi函数ui = uic.loadUi('./listwidget.ui')# 获取列表控件myQListWidget = ui.listWidget# 创建列表项lwItem = QListWidgetItem()# 设置列表项的文本lwItem.setText("海贼王 最终季4 / Attack on Titan:The Final Season 4, The Final Chapters - part 2")# 设置列表项的提示 , 鼠标移到列表项上时显示lwItem.setToolTip("测试一下TollTip 这是一个好的动漫!")# 将列表项添加到列表控件中myQListWidget.addItem(lwItem)# 添加多项列表项list = ["海贼王 最终季3 / Attack on Titan:The Final Season 4, The Final Chapters - part 2","海贼王 最终季4 / Attack on Titan:The Final Season 4, The Final Chapters - part 2","进击的巨人 / Attack on Titan:The Final Season 4, The Final Chapters - part 2",]myQListWidget.addItems(list)# 添加简单的列表项,什么提示都没有myQListWidget.addItem("杀手Queen")# 插入列表项 插入到索引为1的位置myQListWidget.insertItem(1, "死神来了")# 设置当前选中的项 索引为0myQListWidget.setCurrentItem(lwItem)# 获取当前选中的项selectedItemList = myQListWidget.selectedItems()for item in selectedItemList:print(item.text())# 显示窗口(将ui文件内容显示)ui.show()sys.exit(app.exec())    # app.exec()进入无限消息循环,监听用户动作
  • 这是列表显示模式和多选模式:

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

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

相关文章

蒙特卡洛模拟(4)————书店买书问题(0-1规划)

目录一、问题提出二、模型建立1.符号建立2.规定约束3.获得目标函数三、代码求解1.预备知识(1)unique函数(2)randi函数2.变量设置与初始化3.输入循环进行模拟四、模型拓展 一、问题提出二、模型建立 1.符号建立 在图表上,我们可以看见有六家商店和五本书,在代码中我们往往…

KubeSphere 社区双周报| 2024.07.19-08.01

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.07.19-08.01。 贡献者名单新晋 KubeSphere co…

内核简介

Linux内核基础 楔子 这部分的内容首先要回忆一下计算机的基础知识,基本的计算机结构包括CPU(算数逻辑单元ALU、控制单元CU)、存储器、输入和输出。CPU和其它设备是通过总线连接的。CPU执行的基础被称为指令集,CPU执行存储器存取指令时:CPU发出存取信号,然后就从存储器存取…

logback下日志输出前处理操作——以日志脱敏为例

使用lockback 目前Java Spring服务在打印日志时一般使用slf4j和logback这种组合,其基本原理图如下具体的:大多数会先定义一个loackback-dev.xml文件,而后使用<appender>标签定义输出格式 <appender name="file" class="ch.qos.logback.core.rolling…

边分治维护强连通分量(CF1989F,P5163)

这里的边分治和树上的点分治边分治不一样,是维护强连通分量用的,每条边有一个出现时间,通过将每条边按连通关系分流重新排列,从而维护每个时间点整张图的连通性。具体的,这个算法是维护这样的一类问题: n 个点,m 条边按时间顺序依次加入,每加入一条边,你需要回答一些问…

使用 C# 和 ONNX 來玩转Phi-3 SLM

LLM 席卷世界刷新 AI 的认知之后,由于 LLM 需要的硬件要求实在太高,很难在普通设备上运行,因此 SLM 逐漸受到重視,Phi-3 SLM 是由 Microsoft 所开发的模型,可以在你的电脑、手机等设备来运行,小型语言模型 (SLM) 和 ONNX 的结合改变了 AI 互操作性的游戏规则。让我们展…

到底什么是@RestController

@RestController是Spring框架的一个注解,通常用于标识一个类是RESTful服务的Controller。 @RestController经常用来处理HTTP请求,是SpringMVC中用于构建RESTful Web服务的注解,是@Controller注解的变体 通过@RestController注解,SpringMVC可以识别出这个类是一个控制器这个…

【已解决】戴尔 Inspiron 5457 和 5557 启动报错:Invalid configuration information - please run SETUP program.

场景 我使用的是戴尔15-5557的笔记本电脑,在某次开机的时候系统提示:Invalid configuration information - please run SETUP program.虽然的点击Continue可以正常进入系统,但是每次开机都要来上这么一下真的很烦人,于是想着解决一下。 试错过程 1. BIOS调整刚开始以为是自…

6-3使用GPU训练模型

当参数迭代过程成为训练时间的主要瓶颈时,我们通常的方法是应用GPU来进行加速。深度学习的训练过程常常非常耗时,一个模型训练几个小时是家常便饭,训练几天也是常有的事情,有时候甚至要训练几十天。 训练过程的耗时主要来自于两个部分,一部分来自数据准备,另一部分来自参…

从 0 开始安装和运行 Cangjie (仓颉)

在 Windows 上运行你的第一个仓颉应用程序标准方法 参照 配置开发环境 的描述,下载 Cangjie for DevEco Studio 插件 DevEco Studio NEXT Developer Beta2-Cangjie Plugin(5.0.3.500)。然后在 DevEco Studio NEXT Developer Beta2 中从本地磁盘安装插件,选择下载好的 "d…