2016-10-24 6 views
0

を起動し、私は三つの項目PyQtはQListWidgetItem特定の項目はQTDesignerを使用して特定の機能

アップル

バナナ

オレンジ

それらのいずれかのオプションがある私の目標を、含まれている簡単なQListWidgeを作りましたそれを選択すると、特定の機能が起動されます。何らかの理由で私はこれを理解することができず、私はGoogleの検索内で何かを見つけることができません。私はpyQTに新しいので、おそらく私は間違った用語を使用しています。

QT Designerを使用すると、SIGNALとSLOTを設定できますが、効果はQListWidget内のすべての単一項目に適用されますが、それは具体的ではありません。ここで

は私が

QtCore.QObject.connect(self.listWidget、QtCore.SIGNAL(_fromUtf8( "itemClicked(QListWidgetItem *)"))、MainWindow.close)

と心配ですコードです

QListWidgetItemが選択されている場合、そのコードはメインウィンドウを閉じています。私はそれが "リンゴ"が選択されているときにのみ閉じることを望みます。私はバナナとオレンジが別のことをして欲しいです。

私がオンラインで見つけたすべての例のように、アイテムAがアイテムBと何かをやりたいのであれば、すべてのアイテムが同じことをするジェネリックサンプルを使用します。

# -*- coding: utf-8 -*- 

    # Form implementation generated from reading ui file 'untitled.ui' 
    # 
    # Created by: PyQt4 UI code generator 4.11.4 
    # 
    # WARNING! All changes made in this file will be lost! 

    from PyQt4 import QtCore, QtGuii 

    try: 
     _fromUtf8 = QtCore.QString.fromUtf8 
    except AttributeError: 
     def _fromUtf8(s): 
      return s 

    try: 
     _encoding = QtGui.QApplication.UnicodeUTF8 
     def _translate(context, text, disambig): 
      return QtGui.QApplication.translate(context, text, disambig, _encoding) 
    except AttributeError: 
     def _translate(context, text, disambig): 
      return QtGui.QApplication.translate(context, text, disambig) 

    class Ui_MainWindow(object): 
     def setupUi(self, MainWindow): 
      MainWindow.setObjectName(_fromUtf8("MainWindow")) 
      MainWindow.resize(800, 600) 
      self.centralwidget = QtGui.QWidget(MainWindow) 
      self.centralwidget.setObjectName(_fromUtf8("centralwidget")) 
      self.listWidget = QtGui.QListWidget(self.centralwidget) 
      self.listWidget.setGeometry(QtCore.QRect(50, 60, 256, 241)) 
      self.listWidget.setObjectName(_fromUtf8("listWidget")) 
      item = QtGui.QListWidgetItem() 
      self.listWidget.addItem(item) 
      item = QtGui.QListWidgetItem() 
      self.listWidget.addItem(item) 
      item = QtGui.QListWidgetItem() 
      self.listWidget.addItem(item) 
      MainWindow.setCentralWidget(self.centralwidget) 
      self.menubar = QtGui.QMenuBar(MainWindow) 
      self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) 
      self.menubar.setObjectName(_fromUtf8("menubar")) 
      MainWindow.setMenuBar(self.menubar) 
      self.statusbar = QtGui.QStatusBar(MainWindow) 
      self.statusbar.setObjectName(_fromUtf8("statusbar")) 
      MainWindow.setStatusBar(self.statusbar) 

      self.retranslateUi(MainWindow) 
      QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL(_fromUtf8("itemClicked(QListWidgetItem*)")), MainWindow.close) 
      QtCore.QMetaObject.connectSlotsByName(MainWindow) 

     def retranslateUi(self, MainWindow): 
      MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
      __sortingEnabled = self.listWidget.isSortingEnabled() 
      self.listWidget.setSortingEnabled(False) 
      item = self.listWidget.item(0) 
      item.setText(_translate("MainWindow", "apple", None)) 
      item = self.listWidget.item(1) 
      item.setText(_translate("MainWindow", "banana", None)) 
      item = self.listWidget.item(2) 
      item.setText(_translate("MainWindow", "orange", None)) 
      self.listWidget.setSortingEnabled(__sortingEnabled) 


    if __name__ == "__main__": 
     import sys 
     app = QtGui.QApplication(sys.argv) 
     MainWindow = QtGui.QMainWindow() 
     ui = Ui_MainWindow() 
     ui.setupUi(MainWindow) 
     MainWindow.show() 
     sys.exit(app.exec_()) 

答えて

0

は、以下のウェブサイトを使用してソリューションをつなぎ合わせることができましたし、いくつかのサンプルスクリプトが出回っ。解決策の鍵は、.Item

.Item(0)は現在インデックス0に設定されているものを見直しています。以下のWebサイトでは、リスト項目が(i)の場合にTrueを返す.isSelected選択された。

両方の情報を使って、特定のアイテムが選択されたときに特定のアクションを実行できるようになりました。

http://doc.qt.io/qt-4.8/qlistwidgetitem.html#isSelected

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

def closewindow(self): 
    apple = self.listWidget.item(0).isSelected() 
    banana = self.listWidget.item(1).isSelected() 

    if apple == True: 
    self.exitprogram() 
    elif banana == True: 
    print 'Banana selected' 

def exitprogram(self): 
    sys.exit() 
関連する問題