使用QTDesigner我制作了一个包含三个项目的简单QListWidge
苹果
香蕉
橙
我的目标,当选择其中一个选项时,它会启动一个特定的功能。出于某种原因,我无法解决这个问题,而且在Google搜索中找不到任何内容。我是pyQT的新手,所以也许我只是使用了错误的术语。
使用QT Designer我可以设置SIGNAL和SLOT,但效果是针对QListWidget中的每一个项目,它不是特定的。
以下是我关注的代码
QtCore.QObject.connect(self.listWidget,QtCore.SIGNAL(_fromUtf8(“itemClicked(QListWidgetItem *)”)),MainWindow.close)
当选择任何QListWidgetItem时,该代码正在关闭主窗口。我希望它只在选择“apple”时关闭。我希望Banana和Orange做点别的事。
似乎我在网上找到的所有例子都没有解决,如果你想要项目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 :(得分:0)
能够使用下面的网站和一些浮动的示例脚本拼凑解决方案。他们解决的关键是.item
.item(0)正在审查当前在索引0处设置的内容。下面的网站显示我可以附加.isSelected(),当选择列表项时,它将返回True。
使用这两条信息,我现在可以在选择特定项目时采取特定行动。
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()