2012-05-02 19 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() 

Bye!

+0

私の唯一の問題は、アイコンをテキストから分離する方法です。答えをありがとう。 – unice

+0

私はそれが助けてうれしいです。あなたが今問題の例を教えてくれますか?私はあなたにもう少し助けてくれるかもしれません。 –

+0

私はテキストエディタを使用しました。例えば、私はメッセージ "ありがとう:)"を持っています。テキストとアイコンの挿入は別々の機能なので、アイコンやテキストとして挿入されるかどうかはどうすればわかりますか?または、メッセージを解析して、挿入アイコンまたはテキスト関数用のメッセージを知るにはどうすればよいですか。ありがとう@ValiumKnight – unice