首页 > 解决方案 > 如何在 PyQt5 的列表小部件中添加图像?

问题描述

用 pygtk 编写的 tartube 图像

简单地说,我想要实现的是缩略图和一些数据,如图像上方显示的 PyQt5 中 ListWidget 中的一个项目。

我有缩略图的 url 和所有数据,如标题、频道名称等。

通过这样做,我可以在列表小部件中获取标题:

titles = ['title1','title2']
self.listWidget.addItems(titles) 

该设计由 Qt Designer 创建并使用 pyuic5 转换为 python。

这是我在stackoverflow中的第一个问题。我也知道我应该共享代码,但代码通常由 pyuic5 生成,其中只有 listWidget(基于项目)。

提前致谢。

标签: python-3.xpyqt5qlistwidgetqlistwidgetitem

解决方案


如果你想在你的 QListWidget 中放置带有文本的图像,你需要将 QIcon 与 Text 组合成一个 QListWidgetItem ,如下所示:

from PyQt5 import QtGui, QtCore, QtWidgets
import os

icon_path = os.getcwd() + "\icon.jpg"
titles = ['title1','title2']

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QtWidgets.QMainWindow.__init__(self, *args, **kwargs)
        
        self.setupUi(self) 
        #add list of strings
        self.listWidget.addItems(titles)
        #create QIcon
        icon = QtGui.QIcon(icon_path)
        #Create the row with Icon + Text
        item = QtWidgets.QListWidgetItem(icon, "Hello this is a test")
        #set size of the item
        size = QtCore.QSize()
        size.setHeight(100)
        size.setWidth(400)
        item.setSizeHint(size)
        #Put the item into the widget
        self.listWidget.addItem(item)
        
if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

你会得到这样的东西:

例子


推荐阅读