2016-10-24 4 views
0

나는 세 가지 항목PyQt는 QListWidgetItem 특정 항목 발사는 QTDesigner를 사용하여 특정 기능

바나나

오렌지

내 목표는, 이러한 옵션 중 하나입니다

애플

를 포함하는 간단한 QListWidge했다 특정 기능을 시작합니다. 웬일인지 나는 이것을 이해할 수 없다. 그리고 나는 나의 구글 검색 내에서 아무것도 찾을 수 없다. 나는 pyQT에 익숙하지 않기 때문에 잘못된 용어를 사용하고있을 수도 있습니다.

QT Designer를 사용하면 신호 및 슬롯을 설정할 수 있지만 효과는 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

입니다. 항목 (0)은 현재 색인 0에 설정되어있는 항목을 검토하고 있습니다. 아래 웹 사이트에서는 목록 항목이있는 경우 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()