我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用PyQt5 如何在QListWidget中自定义Item

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用PyQt5 如何在QListWidget中自定义Item

使用PyQt5 如何在QListWidget中自定义Item?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

自定义一个Item

新建一个QWidget对象

在QWidget内添加Layout

在Layout内添加要的控件

为QWidget设置Layout

新建一个QListWidgetItem并调整大小

为QListWidgetItem设置QWidget

创建布局

首先我们创建一个最基本的布局, 只有一个listWidget和一个pushButton

实现点击button后在listWidget中添加数据

使用PyQt5 如何在QListWidget中自定义Item

class Windows(QMainWindow, Ui_MainWindow): def __init__(self):  super(Windows, self).__init__()  self.setupUi(self)  self.pushButton.clicked.connect(self.deal) def deal(self):  # 准备实现的功能  passapp = QtWidgets.QApplication(sys.argv)windows = Windows()windows.show()sys.exit(app.exec_())

确定布局

使用PyQt5 如何在QListWidget中自定义Item

可以看出此布局总体是一个横向布局(QHBoxLayout), 再其右边是一个纵向(QVBoxLayout), 下面的布局又是一个横向布局(QHBoxLayout)

def get_item(): # 总Widget wight = QWidget() # 布局 layout_main = QHBoxLayout() # 总体横向布局 layout_right = QVBoxLayout() # 右边的纵向布局 layout_right_down = QHBoxLayout() # 右下的横向布局 layout_right.addLayout(layout_right_down) # 右下布局填充到右边布局中 layout_main.addLayout(layout_right) # 右边布局填充入总布局 wight.setLayout(layout_main) # 为Widget设置总布局

添加数据

{ "ship_name": "胡德", "ship_country": "E国", "ship_star": "5", "ship_index": "1", "ship_photo": "1.png", "ship_type": "战巡"}
def get_item_wight(data): # 读取属性 ship_name = data['ship_name'] ship_photo = data['ship_photo'] ship_index = data['ship_index'] ship_type = data['ship_type'] ship_country = data['ship_country'] ship_star = data['ship_star'] # 总Widget wight = QWidget() # 总体横向布局 layout_main = QHBoxLayout() map_l = QLabel() # 头像显示 map_l.setFixedSize(40, 25) maps = QPixmap(ship_photo).scaled(40, 25) map_l.setPixmap(maps) # 右边的纵向布局 layout_right = QVBoxLayout() # 右下的的横向布局 layout_right_down = QHBoxLayout() # 右下的横向布局 layout_right_down.addWidget(QLabel(ship_type)) layout_right_down.addWidget(QLabel(ship_country)) layout_right_down.addWidget(QLabel(str(ship_star) + "星")) layout_right_down.addWidget(QLabel(ship_index)) # 按照从左到右, 从上到下布局添加 layout_main.addWidget(map_l) # 最左边的头像 layout_right.addWidget(QLabel(ship_name)) # 右边的纵向布局 layout_right.addLayout(layout_right_down) # 右下角横向布局 layout_main.addLayout(layout_right) # 右边的布局 wight.setLayout(layout_main) # 布局给wight return wight # 返回wight

设置QListWidgetItem

for ship_data in YOUR_DATA: item = QListWidgetItem() # 创建QListWidgetItem对象 item.setSizeHint(QSize(200, 50)) # 设置QListWidgetItem大小 widget = get_item_wight(ship_data) # 调用上面的函数获取对应 self.listWidget.addItem(item) # 添加item self.listWidget.setItemWidget(item, widget) # 为item设置widget

显示效果:

使用PyQt5 如何在QListWidget中自定义Item

全部代码

import sysimport jsonfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object): """ 自动生成的代码, 请不要修改 """ def setupUi(self, MainWindow):  MainWindow.setObjectName("MainWindow")  MainWindow.resize(455, 357)  self.centralwidget = QtWidgets.QWidget(MainWindow)  self.centralwidget.setObjectName("centralwidget")  self.listWidget = QtWidgets.QListWidget(self.centralwidget)  self.listWidget.setGeometry(QtCore.QRect(10, 10, 341, 341))  self.listWidget.setObjectName("listWidget")  self.pushButton = QtWidgets.QPushButton(self.centralwidget)  self.pushButton.setGeometry(QtCore.QRect(360, 10, 81, 31))  self.pushButton.setObjectName("pushButton")  MainWindow.setCentralWidget(self.centralwidget)  self.retranslateUi(MainWindow)  QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow):  _translate = QtCore.QCoreApplication.translate  MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))  self.pushButton.setText(_translate("MainWindow", "PushButton"))class Windows(QMainWindow, Ui_MainWindow): def __init__(self):  super(Windows, self).__init__()  self.setupUi(self)  self.pushButton.clicked.connect(self.deal) def deal(self):  all_data = json.loads('[{"ship_name":"\u80e1\u5fb7","ship_country":"E\u56fd","ship_star":"5","ship_index":"1","ship_photo":"icon/1.png","ship_type":"\u6218\u5de1"},{"ship_name":"\u6d4b\u8bd5","ship_country":"E\u56fd","ship_star":"5","ship_index":"1","ship_photo":"icon/2.png","ship_type":"\u6218\u5de1"},{"ship_name":"\u6d4b\u8bd52","ship_country":"E\u56fd","ship_star":"5","ship_index":"1","ship_photo":"icon/3.png","ship_type":"\u6218\u5de1"},{"ship_name":"\u6d4b\u8bd53","ship_country":"E\u56fd","ship_star":"5","ship_index":"1","ship_photo":"icon/4.png","ship_type":"\u6218\u5de1"}]')  def get_item_wight(data):   # 读取属性   ship_name = data['ship_name']   ship_photo = data['ship_photo']   ship_index = data['ship_index']   ship_type = data['ship_type']   ship_country = data['ship_country']   ship_star = data['ship_star']   # 总Widget   wight = QWidget()   # 总体横向布局   layout_main = QHBoxLayout()   map_l = QLabel() # 头像显示   map_l.setFixedSize(40, 25)   maps = QPixmap(ship_photo).scaled(40, 25)   map_l.setPixmap(maps)   # 右边的纵向布局   layout_right = QVBoxLayout()   # 右下的的横向布局   layout_right_down = QHBoxLayout() # 右下的横向布局   layout_right_down.addWidget(QLabel(ship_type))   layout_right_down.addWidget(QLabel(ship_country))   layout_right_down.addWidget(QLabel(str(ship_star) + "星"))   layout_right_down.addWidget(QLabel(ship_index))   # 按照从左到右, 从上到下布局添加   layout_main.addWidget(map_l) # 最左边的头像   layout_right.addWidget(QLabel(ship_name)) # 右边的纵向布局   layout_right.addLayout(layout_right_down) # 右下角横向布局   layout_main.addLayout(layout_right) # 右边的布局   wight.setLayout(layout_main) # 布局给wight   return wight # 返回wight  for ship_data in all_data:   item = QListWidgetItem() # 创建QListWidgetItem对象   item.setSizeHint(QSize(200, 50)) # 设置QListWidgetItem大小   widget = get_item_wight(ship_data) # 调用上面的函数获取对应   self.listWidget.addItem(item) # 添加item   self.listWidget.setItemWidget(item, widget) # 为item设置widgetapp = QtWidgets.QApplication(sys.argv)windows = Windows()windows.show()sys.exit(app.exec_())

补充:pyqt5 QListWiget点击item事件

我就废话不多说了,大家还是直接看代码吧~

from PyQt4.QtCore import QCoreApplication, Qtfrom PyQt4.QtGui import QListWidget, QListWidgetItem, QApplication import sys class MyList(QListWidget): def __init__(self):  QListWidget.__init__(self)  self.add_items()  self.itemClicked.connect(self.item_click)  def add_items(self):  for item_text in ['item1', 'item2', 'item3']:   item = QListWidgetItem(item_text)   self.addItem(item)  def item_click(self, item):  print item, str(item.text()) if __name__ == '__main__': app = QApplication([]) myList = MyList() myList.show() sys.exit(app.exec_())

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用PyQt5 如何在QListWidget中自定义Item

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用PyQt5 如何在QListWidget中自定义Item

使用PyQt5 如何在QListWidget中自定义Item?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。自定义一个Item新建一个QWidget对象在QWid
2023-06-08

如何在pyqt5中使用QListWidget

本篇文章给大家分享的是有关如何在pyqt5中使用QListWidget,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、简介QListWidget 是一个升级版本的QListV
2023-06-14

Python PyQt5中如何自定义信号

这篇文章将为大家详细讲解有关Python PyQt5中如何自定义信号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PyQ5已经自动定义了很多QT自建的信号。但是在实际的使用中为了灵活使用信号与槽机制,可以
2023-06-29

如何在SQLite中使用自定义函数

在SQLite中使用自定义函数可以通过以下步骤实现:创建一个自定义函数:CREATE FUNCTION my_function(param1 TEXT, param2 TEXT) RETURNS TEXT ASBEGIN-- 在这里编写自
如何在SQLite中使用自定义函数
2024-03-14

Android自定义控件如何在XML文件中使用自定义属性

这篇文章主要为大家介绍了Android自定义控件之如何在XML文件中使用自定义属性示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-14

如何在Vue CLI中使用自定义组件

在Vue.js框架下,使用自定义组件能够大大提高项目的开发效率。Vue CLI是一个基于Vue.js快速搭建项目的脚手架工具,Vue CLI的快速开发流程便于开发人员更快速地搭建项目。本篇文章将介绍如何在Vue CLI中使用自定义组件。一、创建Vue项目首先,在终端中输入以下命令以创建Vue项目:```vue create <project-name>```其中,`<proje
2023-05-14

如何在css3中使用font-face自定义字体

今天就跟大家聊聊有关如何在css3中使用font-face自定义字体,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码如下:@font-face { font-family: MyF
2023-06-09

如何在 Golang 中使用自定义错误类型?

在 golang 中使用自定义错误类型可以创建特定于应用程序的更具描述性和可操作性的错误消息。步骤如下:声明自定义错误类型并实现 error 接口。在函数中返回自定义错误。使用 errors.is() 或 errors.as() 函数检查错
如何在 Golang 中使用自定义错误类型?
2024-05-14

item方法如何在javascript中使用

这篇文章给大家介绍item方法如何在javascript中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。创建一个名称为 item 的html文件添加一个button按钮,在点击事件中加入自定义函数 myite
2023-06-14

如何在Android中自定义Dialog

本篇文章为大家展示了如何在Android中自定义Dialog,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。功能:android 提供给我们的只有2种Dialog 即 AlertDialog & Pr
2023-05-31

如何在Android中自定义ProgressBar

如何在Android中自定义ProgressBar?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:
2023-05-30

ActionBar Item如何在Android应用中使用

这篇文章将为大家详细讲解有关ActionBar Item如何在Android应用中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、在Androidmanifest.xml里面加上
2023-05-31

如何在MySQL中使用JavaScript编写自定义函数

如何在MySQL中使用JavaScript编写自定义函数MySQL是一个流行的关系型数据库管理系统,而JavaScript是一种广泛用于网页开发的脚本语言。尽管MySQL自带了许多内建函数,但有时我们可能需要编写自定义函数来满足特定的需求。
2023-10-22

如何在C#项目中使用WPF自定义按钮

今天就跟大家聊聊有关如何在C#项目中使用WPF自定义按钮,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实现效果使用图片做按钮背景;自定义鼠标进入时效果;自定义按压效果;自定义禁用效果
2023-06-06

如何在MySQL中使用Python编写自定义函数

如何使用Python编写MySQL自定义函数在MySQL中使用Python编写自定义函数,可以扩展数据库功能,增强灵活性、代码可重用性和性能。本文提供了一个逐步指南,包括安装先决条件、创建函数、编写Python函数、调用函数和处理错误的步骤。遵循最佳实践,例如函数命名约定、类型提示和单元测试,以创建高效且可维护的自定义函数。
如何在MySQL中使用Python编写自定义函数
2024-04-10

如何在MySQL中使用Python编写自定义函数

在MySQL中使用Python编写自定义函数可以通过以下步骤实现:1. 首先,需要安装MySQL的Python驱动程序。可以使用以下命令进行安装:```pip install mysql-connector-python```2. 连接到M
2023-10-10

如何在MySQL中使用C#编写自定义函数

在MySQL中使用C#编写自定义函数需要以下步骤:1. 创建一个C#类库项目,并添加对MySQL.Data.dll的引用。2. 在C#类库项目中创建一个类,用于实现自定义函数的逻辑。例如,创建一个名为"CustomFunctions"的类。
2023-10-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录