2012-05-02 52 views
1

如何在pyqt4 python的qlistwidget中添加帶有文本的圖片/圖標?我想像聊天系統一樣添加帶有文本的圖標。謝謝如何在qlistwidget pyqt4 python中添加帶有文本的圖像?

+0

['QListWidgetItem'](http://qt-project.org/doc/qt-4.8/qlistwidgetitem.html#QListWidgetItem-3)可以有圖標。有什麼問題? – 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

相關問題