2

pyqt4 pythonのqlistwidgetにテキスト付きの画像/アイコンを追加するにはどうすればよいですか?チャットシステムのようにテキスト付きのアイコンを追加したい。ありがとう

4

1 に答える 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 に答える