python - 如何访问 QTreeWidget 中当前的 QComboBox 数据

标签 python pyqt4 pyside signals-slots qcombobox

我在这个上使用 PySide。我似乎无法访问嵌入树小部件中的组合框中的当前文本。我能得到的是最后创建的组合框的当前文本。需要注意的是,在我的主程序中,这些组合框将动态生成,因此不会有固定的数量。因此无法建立唯一标识符。

import sys
from PySide import QtCore
from PySide import QtGui

class Example(QtGui.QMainWindow):    
    def __init__(self):
        super(Example, self).__init__()
        self.di = {"name":["Bill", "Dan", "Steve"], "age":["45","21","78"]}        
        self.initUI()
        self.populateTree()

    def initUI(self):
        self.tree = QtGui.QTreeWidget()
        self.tree.setColumnCount(1)
        self.setCentralWidget(self.tree)
        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')    
        self.show()

    def populateTree(self):
        # Add widget item to tree
        for key, value in self.di.iteritems():
            item1 = QtGui.QTreeWidgetItem()
            item1.setText(0, key)
            item1.setExpanded(True)
            self.tree.addTopLevelItem(item1)
            # Add Combo Box to widget item
            item2 = QtGui.QTreeWidgetItem(item1)
            combo = QtGui.QComboBox(self.tree)
            combo.addItems(value)
            self.tree.setItemWidget(item2, 0, combo)
            combo.currentIndexChanged.connect(lambda: self.doSomething(combo.currentText()))

    def doSomething(self, n):
        print n            

def main():    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

最佳答案

使用默认参数缓存当前实例:

combo.currentIndexChanged.connect(
    lambda index, combo=combo: self.doSomething(combo.currentText()))

关于python - 如何访问 QTreeWidget 中当前的 QComboBox 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40182780/

相关文章:

python - pyside + py2exe,用户加载的图片不出现

python - 模块 Flask 登录时出错

Python:在PyQt4之谜中嵌入Chaco

python - 添加新小部件时,滚动区域无法扩展(滚动)

pyqt4 - 我在哪里可以找到 Mac Os x 中的 pyqt 示例文件夹?

python - 传递类变量时类对象中的装饰器

python - YouTube Python游戏

python - 使用 url_for 函数为 Flask 测试客户端生成 URL

python - 主 python 线程的 PyThreadState* 是否应为 NULL?

python - cx_freeze 生成的 EXE 能否完全反编译回可读的 Python 代码?