访问QComboBox索引值

时间:2014-10-10 08:27:53

标签: python pyqt qcombobox

我有一个包含2个项目的comboxbox - Method01, Method02 如果选择Method01Func,我如何告诉我的代码执行Method01,同样适用于Method02

self.connect(self.exportCombo, SIGNAL('currentIndexChanged(int)'), self.Method01Func)

list - [0],[1]中访问时,我试图用相似的东西对其进行编码......但我遇到了错误

2 个答案:

答案 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())