微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 从 QTablewidget 中检索 QComboBox

如何解决Python 从 QTablewidget 中检索 QComboBox

我现在学习 Python 一个月,学习 QDesigner/Qt 半个月。 在 QDesigner 中,我有一个 QTableWidget,我将其提升为我自己的 InputTable(QTableWidget) 类。

class InputTable(QTableWidget):
    def __init__(self,parent=None):
        self.parent = parent
        super(QTableWidget,self).__init__(parent)
...

我插入了一些 QComboBoxes,允许用户选择表中值的单位。这是在 InputTable 类中的初始化。

pressureunits = [ "barg","bara","psig","psia"]
        pressurecomboBox = QComboBox()
        for i in range(len(pressureunits)):
            pressurecomboBox.addItem(pressureunits[i])
            self.setCellWidget(2,pressurecomboBox)

到目前为止,一切都很好。

现在我想将所有输入数据转换为一个并行表(主表),其中的值以 SI 单位为单位,以便进一步分析。

units = self.tableInputs.cellWidget(2,0)
if units.currentIndex()==0:   # this means the comboBox is at the first entry
    mastertable[0,2] = float(self.tableInputs.item(2,1).text())  

这失败了,因为单位是 QWidget 类型,它没有属性 currentIndex。在某些论坛上,我读到 QComboBox 是 QWidget 的子项,我玩过 children() 函数,但这里没有解决方案。有些人建议切换到 QTableView 结构。我花了一天的时间寻找如何做到这一点,但还没有找到。有什么聪明的想法吗?

更新:在降低我的问题的所有复杂性后,我找到了下面的解决方案。

from PyQt5.QtWidgets import QComboBox,QTableWidget,QTableWidgetItem

Mytable = QTableWidget(3,3)
Mytable.setItem(0,QTableWidgetItem("1"))
print("Now retrieve the data :",Mytable.item(0,0).text())

pressureunits = [ "barg","psia"]
pressurecomboBox = QComboBox()
for i in range(len(pressureunits)):
    pressurecomboBox.addItem(pressureunits[i])
    Mytable.setCellWidget(2,pressurecomboBox)
print("Now retrieve the active (first) entry :",Mytable.cellWidget(2,0).currentText())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。