PyQT5之QListWidget

news/2024/9/29 21:25:06

实例1

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QMessageBox, QApplication, QWidget, QVBoxLayout, QPushButton, QListWidget, QListWidgetItemclass ListWidgetDemo(QMainWindow):def __init__(self, parent=None):super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体self.setWindowTitle("QListWidget 例子")self.resize(300, 270)self.listwidget = QListWidget()self.listwidget.resize(300, 120)self.listwidget.addItem("item1")self.listwidget.addItem("item2")self.listwidget.addItem("item3")self.listwidget.addItem("item4")self.listwidget.addItem("item5")self.setCentralWidget(self.listwidget)self.listwidget.itemClicked.connect(self.clicked)def clicked(self, index):QMessageBox.information(self, "QListWidget", "您选择了:" + self.listwidget.item(self.listwidget.row(index)).text())if __name__ == '__main__':app = QApplication(sys.argv)myMain = ListWidgetDemo()myMain.show()sys.exit(app.exec_())

实例2

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QListWidget, QListWidgetItemclass QmyWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体self.setupUi()def setupUi(self):"""页面初始化"""# 设置窗体大小及标题self.resize(500, 400)self.setWindowTitle("QListWidget组件示例")# 创建布局self.layout = QVBoxLayout()# 创建QListWidget组件self.listWidget = QListWidget()self.listWidget.addItem("Item 1")  # 添加itemself.listWidget.addItem("Item 2")self.listWidget.addItem("Item 3")self.listWidget.addItem("Item 4")# self.listWidget.addItems(["Item 1", "Item 2", "Item 3", "Item 4"])  # 添加多个item# QListWidget组件绑定信号self.listWidget.itemClicked.connect(self.on_listWidget_itemClicked)self.listWidget.itemChanged.connect(self.on_listWidget_itemChanged)self.listWidget.itemDoubleClicked.connect(self.on_listWidget_itemDoubleClicked)# 创建两个按钮组件self.button1 = QPushButton("新增Item", self)self.button1.clicked.connect(self.insert_item)  # 为button绑定槽函数self.button2 = QPushButton("删除Item", self)self.button2.clicked.connect(self.delete_item)  # 为button绑定槽函数self.button3 = QPushButton("查询Item", self)self.button3.clicked.connect(self.select_item)  # 为button绑定槽函数self.button4 = QPushButton("修改Item", self)self.button4.clicked.connect(self.change_item)  # 为button绑定槽函数# 将组件添加到布局中self.layout.addWidget(self.listWidget)self.layout.addWidget(self.button1)self.layout.addWidget(self.button2)self.layout.addWidget(self.button3)self.layout.addWidget(self.button4)# 为窗体添加布局self.setLayout(self.layout)def insert_item(self):"""新增item槽函数"""print("item新增成功!")# 方式一:新增文本itemself.listWidget.insertItem(0, "Item Text")# 方式二:新增QListWidgetItem对象itemitem_new = QListWidgetItem()item_new.setText("Item Obj")  # 为item设置文本item_new.setCheckState(False)  # 为item设置复选状态,不勾选item_new.setIcon(QIcon("logo.png"))  # 为item设置图标item_new.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsUserCheckable)  # 为item设置标志self.listWidget.insertItem(0, item_new)# 方式三:新增其他部件的itemitem_button = QListWidgetItem()button = QPushButton("Button")self.listWidget.insertItem(0, item_button)self.listWidget.setItemWidget(item_button, button)  # 为item设置按钮部件def delete_item(self):"""删除item槽函数"""print("item删除成功!")# 方式一:按行索引删除item对象self.listWidget.takeItem(0)# 方式一:按item对象删除item的小部件current_item = self.listWidget.currentItem()self.listWidget.removeItemWidget(current_item)def select_item(self):"""查询item槽函数"""print("item查询成功!")# 隐藏所有的列表项for i in range(4):self.listWidget.item(i).setHidden(True)# 查询Item 1并取消隐藏item_list = self.listWidget.findItems("Item 1", Qt.MatchContains | Qt.MatchRecursive)for item in item_list:item.setHidden(False)def change_item(self):self.listWidget.item(0).setText('修改了第一行的值')def on_listWidget_itemClicked(self, item):"""槽函数"""print('itemClicked信号:', item.text())def on_listWidget_itemChanged(self, item):print('itemChange信号:', item.text())def on_listWidget_itemDoubleClicked(self, item):print('双击信号:', item.text())if __name__ == '__main__':app = QApplication(sys.argv)myMain = QmyWidget()myMain.show()sys.exit(app.exec_())

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

云原生技术实践营 深圳站——Serverless + AI 专场开启报名!

1.活动简介 “云原生技术实践营 深圳站 ——Serverless +AI应用开发专场” 是一场以 Serverless 为主题的技术活动,通过一个下午的时间增进对 Serverless 技术的理解,快速上手,活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、…

数据平台:企业数字化转型的加速器

企业数字化转型的基本路径 数字化转型是一个逐步发展的进程,它遵循着从计算机化到连接、透明化、预测和自适应的路径。在这一进程中,企业从传统工厂向透明工厂、智能工厂转变,实现工业4.0的目标。这一转变涉及人机环境料法的各个方面,包括现场管理、制造管理、运营管理等,…

隐马尔科夫模型HMM——Python实现

隐马尔科夫模型(Hidden Markov Model, HMM)是一种统计模型,用于描述一个由隐藏的马尔科夫链驱动的随机过程,其中观测序列和状态序列之间存在某种统计依赖关系。HMM通过一组隐藏状态(隐含状态)和观测到的序列来描述系统的行为,通常用于解决时间序列分析、模式识别和自然语…

物理机开关机

关机[root@openstack017.xx.com xx]# init 0Receive Connection closedConnection websocket closed

根据业务数据计算系统并发

1、日活 访问量 活跃度 2.1 PV(Page View) 访问量, 即页面累计浏览量或点击量,衡量网站用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计。 2.2 UV(Unique Visitor)访问用户数(去重),统计1天内访问某…

kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现实时增量同步

1、之前kettle cdc mysql的时候使用的方案是canal+kafka+kettle,今天我们一起学习下使用kettle的插件Debezium直接cdc mysql。注:CDC (Change Data Capture) 是一种技术,用于捕获和同步数据库中的更改。1)Debezium步骤解析mysql binlog日志。 2)json input步骤解析json字符…

可视化学习:如何使用后期处理通道增强图像效果

GPU是并行渲染的,这样的渲染很高效。但是在实际需求中,有时我们计算片元色值时,需要依赖周围像素点或者某个其他位置像素点的颜色信息,这样的话想要一次性完成绘制就无法做到,需要对纹理进行二次加工处理。前言 大家好,本文分享的是如何使用后期处理通道增强图像效果,通…

wkhtmltopdf的下载和使用

wkhtmltopdf 是一个开源的命令行工具,用于将 HTML 页面转换为 PDF 文档。它使用 Qt WebKit 渲染引擎,支持 CSS、JavaScript 等前端技术,并提供丰富的配置选项,使用户能够控制转换过程。 下载步骤 (1)打开官网链接:https://wkhtmltopdf.org/downloads.html根据自己电脑系…