2012-02-16 6 views
3

リストウィジェット内の任意の関数をクリックすると、特定の関数が実行されます。今私は、その関数へのパラメータとして、アイテム自体を送信したいと思います。 listWidgetで選択した項目を別の関数にパラメータとして送信する方法

QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.test) 

def test(self): 
    print 'hello' 

は、代わりに私がしたい: - それはパラメータとしてクリック QListWidgetItemを送信放出されたとき itemClickedすでに動作するはず

def test(self,item): 
     print item 

答えて

10

ここでは、コードです。余分なパラメータを受け入れるようにtest関数を編集するだけで、それはQListWidgetItemになります。

from PyQt4.QtCore import QCoreApplication, Qt 
from PyQt4.QtGui import QListWidget, QListWidgetItem, QApplication 

import sys 

class MyList(QListWidget): 
    def __init__(self): 
     QListWidget.__init__(self) 
     self.add_items() 
     self.itemClicked.connect(self.item_click) 

    def add_items(self): 
     for item_text in ['item1', 'item2', 'item3']: 
      item = QListWidgetItem(item_text) 
      self.addItem(item) 

    def item_click(self, item): 
     print item, str(item.text()) 

if __name__ == '__main__': 
    app = QApplication([]) 
    myList = MyList() 
    myList.show() 
    sys.exit(app.exec_()) 

上記の例では、3つの項目を持つQListWidgetが表示されます。アイテムをクリックすると、そのアイテムのテキストとともにアイテムがコンソールに印刷されます。

+0

返信いただきありがとうございます。私はあなたのためにもう一つ質問があります、textEditの異なる行に異なる色(2つ)を与えることは可能ですか?たとえば、BLACK、GRAYです。各行は異なる色をしています。 – Jack

+0

QTextEditの場合は?話題をテーマにして、同じ質問のある他の人々が見つけやすくするために、これを別の質問として投稿することをお勧めします。 QTableWidgetの異なる色の行について話している場合は、QTableWidgetの.setAlternatingRowColors(True)を呼び出して、行の背景色を交互にすることができます。 –

関連する問題