如何在qlistwidget pyqt4 python中添加带文本的图像?

uni*_*ice 2 python qlistwidget pyqt4

如何在pyqt4 python中的qlistwidget中添加带文本的图像/图标?我想添加一个带文字的图标,就像聊天系统一样.谢谢

And*_*rte 5

我现在已经尝试了这个并且它有效,假设你在与这个脚本相同的文件夹中有一个名为tick.png的文件.

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QApplication, QDialog, QListWidgetItem, QListWidget, QIcon

def main():

    app = QtGui.QApplication(sys.argv)
    window = QDialog()

    list = QListWidget( window )

    itm = QListWidgetItem( "Tick" );
    itm.setIcon(QIcon(r"tick.png"));
    list.addItem(itm);

    window.show( )
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

类似聊天的图标系统可能与此不同,但是现在我没有看到让QListWidgetItem具有多个表情符号和文本的方法.

您可以将smileys视为QListWidgetItem的特定情况,其中文本为空并且仅存在图标.

另一种解决方案是使用只读QTextEdit作为聊天板,让用户在单独的可编辑QTextEdit中键入其文本+图标+文本(等).然后,当他按下发送按钮时,将他键入的所有内容附加到只读QTextEdit.

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QApplication, QDialog, QListWidgetItem, QListWidget, QIcon, QTextEdit, QTextDocumentFragment

def main():

    app = QtGui.QApplication(sys.argv)
    window = QDialog()

    list = QListWidget( window )

    textEditor = QTextEdit( window );
    textEditor.setReadOnly( True )
    tick_icon = QTextDocumentFragment.fromHtml(r"<img src='tick.png'>");

    textEditor.insertPlainText ( " ValiumKnight writes: " )
    textEditor.textCursor().insertFragment(tick_icon);
    textEditor.insertPlainText ( " Hello World " )
    textEditor.textCursor().insertFragment(tick_icon);
    textEditor.textCursor().insertFragment(tick_icon);
    textEditor.textCursor().insertFragment(tick_icon);

    window.show( )
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

再见!