2012-05-02 2 views
1

Как добавить изображение/значок с текстом в qlistwidget в pyqt4 python? Я хочу добавить значок с текстом, как в чат-системе. спасибоКак добавить изображение с текстом в qlistwidget pyqt4 python?

+0

['QListWidgetItem'] (http://qt-project.org/doc/qt-4.8/qlistwidgetitem.html#QListWidgetItem-3) s может иметь значки. В чем проблема? – Avaris

+0

Я хочу добавить значок до или после текста. Является ли это возможным? – unice

ответ

3

Я пробовал это прямо сейчас, и это работает, если у вас есть файл с именем 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() 

Прощай!

+0

Моя единственная проблема теперь в том, как отделить значки от текста. Спасибо за ответ. – unice

+0

Я рад, что это помогло. Можете ли вы привести мне пример проблемы, которую вы сейчас имеете? Я могу попытаться дать вам дополнительную помощь. –

+0

Я использую текстовый редактор. Например, у меня есть сообщение «спасибо :)». Поскольку вставка текста и значка является отдельной функцией. Как я узнаю, будет ли :) вставлен как значок или текст. Или как разобрать сообщение, чтобы знать, что его для значка вставки или текстовой функции. Спасибо @ValiumKnight – unice

Смежные вопросы