如何在 pyqt4 python 的 qlistwidget 中添加带有文本的图像/图标?我想像聊天系统一样添加带有文本的图标。谢谢
问问题
5992 次
1 回答
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()
类似聊天的图标系统可能与此不同,但现在我看不到有一种方法可以让 QListWidgetItem 具有多个笑脸和文本。
您可能会将笑脸视为 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()
再见!
于 2012-05-02T04:03:03.087 回答