В Qt4 дизайнере создал listWidget и кнопку. Надо сделать так, чтобы при нажатии на кнопку выполнялась некоторая функция, при этом у ней передавалось значение выбранного пункта в списке.
Я смог только вызвать функцию без передачи параметров:
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.test)
Вот программа:
from PyQt4 import QtCore, QtGui class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(450, 617) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.listWidget = QtGui.QListWidget(self.centralwidget) self.listWidget.setGeometry(QtCore.QRect(10, 10, 221, 551)) self.listWidget.setToolTip("") self.listWidget.setObjectName("listWidget") QtGui.QListWidgetItem(self.listWidget) QtGui.QListWidgetItem(self.listWidget) QtGui.QListWidgetItem(self.listWidget) QtGui.QListWidgetItem(self.listWidget) self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(240, 20, 101, 27)) self.pushButton.setObjectName("pushButton") QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.test) # это всё, что смог сделать self.pushButton_2 = QtGui.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(350, 20, 91, 27)) self.pushButton_2.setObjectName("pushButton_2") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 450, 25)) self.menubar.setObjectName("menubar") self.menu675 = QtGui.QMenu(self.menubar) self.menu675.setObjectName("menu675") MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.action7686 = QtGui.QAction(MainWindow) self.action7686.setObjectName("action7686") self.action = QtGui.QAction(MainWindow) self.action.setObjectName("action") self.menu675.addAction(self.action7686) self.menu675.addAction(self.action) self.menubar.addAction(self.menu675.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def test(self): print 'test' def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) __sortingEnabled = self.listWidget.isSortingEnabled() self.listWidget.setSortingEnabled(False) self.listWidget.item(0).setText(QtGui.QApplication.translate("MainWindow", "xfh", None, QtGui.QApplication.UnicodeUTF8)) self.listWidget.item(1).setText(QtGui.QApplication.translate("MainWindow", "dfj", None, QtGui.QApplication.UnicodeUTF8)) self.listWidget.item(2).setText(QtGui.QApplication.translate("MainWindow", "wea", None, QtGui.QApplication.UnicodeUTF8)) self.listWidget.item(3).setText(QtGui.QApplication.translate("MainWindow", "fnk", None, QtGui.QApplication.UnicodeUTF8)) self.listWidget.setSortingEnabled(__sortingEnabled) self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Установить", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Удалить", None, QtGui.QApplication.UnicodeUTF8)) self.menu675.setTitle(QtGui.QApplication.translate("MainWindow", "Справка", None, QtGui.QApplication.UnicodeUTF8)) self.action7686.setText(QtGui.QApplication.translate("MainWindow", "О программе", None, QtGui.QApplication.UnicodeUTF8)) self.action.setText(QtGui.QApplication.translate("MainWindow", "Как пользоваться", None, QtGui.QApplication.UnicodeUTF8)) 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_())
Повторюсь, надо чтобы было так:
выбрал в списке к примеру первый пункт, нажал на кнопку, а некоторая функция приняла значение пункта и вывела его значение, то есть в данном случае - “xfh”
Заранее спасибо