我有一个包含2个项目的comboxbox - Method01, Method02
如果选择Method01Func
,我如何告诉我的代码执行Method01
,同样适用于Method02
?
self.connect(self.exportCombo, SIGNAL('currentIndexChanged(int)'), self.Method01Func)
在list
- [0],[1]中访问时,我试图用相似的东西对其进行编码......但我遇到了错误
答案 0 :(得分:1)
一种方法是在调用addItem()
时使用userData
参数,并传入对您希望该项调用的函数的引用。
这是一个简单的例子:
import sys
from PyQt4 import QtCore, QtGui
def Method01Func():
print 'method 1'
def Method02Func():
print 'method 2'
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
widget = QtGui.QWidget()
self.combo = QtGui.QComboBox()
self.combo.addItem('Method 1', Method01Func)
self.combo.addItem('Method 2', Method02Func)
self.combo.currentIndexChanged.connect(self.execute_method)
layout = QtGui.QVBoxLayout(widget)
layout.addWidget(self.combo)
self.setCentralWidget(widget)
@QtCore.pyqtSlot(int)
def execute_method(self, index):
method = self.combo.itemData(index).toPyObject()
method()
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
答案 1 :(得分:0)
或者您可以使用以下信号发送当前项目文本:
self.exportCombo.currentIndexChanged[str].connect(self.execute_method)
并在插槽中查看:
def execute_method(self, text):
(self.Method01Func() if text == 'Method01' else self.Method02Func())