使用PyQt5如何在QListWidget中自定义项目

  介绍

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


新建一个QWidget对象

在QWidget内添加布局

在布局内添加要的控件

为QWidget设置布局

新建一个QListWidgetItem并调整大小

为QListWidgetItem设置QWidget

创建布局

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

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

使用PyQt5如何在QListWidget中自定义项”> </p> <pre类= class  Windows (QMainWindow, Ui_MainWindow):   自我,def  __init__ ():   超级才能(Windows,,自我). __init__ ()   self.setupUi才能(自我)   self.pushButton.clicked.connect才能(self.deal)   ,def 交易(自我):   #,才能准备实现的功能   ,通过   时间=app  QtWidgets.QApplication (sys.argv)   windows =, Windows ()   windows.show ()   sys.exit (app.exec_ ())

确定布局

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

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

def  get_item ():   ,#总小部件=,,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), #,为小部件设置总布局

添加数据

{   ,“ship_name":“胡德“,   ,“ship_country":“E国“,   ,“ship_star":“5”,   ,“ship_index":“1”,   ,“ship_photo":,“1. png"   ,“ship_type":“战巡“;   } def  get_item_wight(数据):   ,#读取属性=,ship_name 数据(& # 39;ship_name& # 39;】=,ship_photo 数据(& # 39;ship_photo& # 39;】=,ship_index 数据(& # 39;ship_index& # 39;】=,ship_type 数据(& # 39;ship_type& # 39;】=,ship_country 数据(& # 39;ship_country& # 39;】=,ship_star 数据(& # 39;ship_star& # 39;】   ,#总小部件=,,wight  QWidget ()   ,#总体横向布的局=,,layout_main  QHBoxLayout ()=,,map_l  QLabel(), #,头像显示   ,25日,map_l.setFixedSize (40)=,,maps  QPixmap (ship_photo) .scaled(40岁,25)   ,map_l.setPixmap(地图)   ,#右边的纵向布的局=,,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), #,布局给怀特岛   ,return  wight  #,返回怀特

设置QListWidgetItem

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

显示效果:

使用PyQt5如何在QListWidget中自定义项”> </p> <h3>全部代码</h3> <pre类= import 系统   import  json   得到PyQt5.QtWidgets  import  *   得到PyQt5.QtGui  import  *   得到PyQt5.QtCore  import  *   得到PyQt5  import  QtCore, QtGui, QtWidgets   class  Ui_MainWindow(对象):   ,“““   ,自动生成的代码,,请不要修改   ,“““   ,def  setupUi(自我,,主窗口):   MainWindow.setObjectName才能(“MainWindow")   MainWindow.resize才能(455,,357)   时间=self.centralwidget 才能;QtWidgets.QWidget(主窗口)   self.centralwidget.setObjectName才能(“centralwidget")   时间=self.listWidget 才能;QtWidgets.QListWidget (self.centralwidget)   self.listWidget.setGeometry才能(QtCore.QRect(10日,10日,341年,341年))   self.listWidget.setObjectName才能(“listWidget")   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用PyQt5如何在QListWidget中自定义项目