python - 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, 0, 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, 0, QTableWidgetItem("1"))
print("Now retrieve the data :", Mytable.item(0, 0).text())
pressureunits = [ "barg","bara", "psig", "psia"]
pressurecombobox = QComboBox()
for i in range(len(pressureunits)):
pressurecombobox.addItem(pressureunits[i])
Mytable.setCellWidget(2, 0, pressurecombobox)
print("Now retrieve the active (first) entry :", Mytable.cellWidget(2,0).currentText())
解决方案
推荐阅读
- javascript - 无法在 node.js Web 应用程序中显示 EJS 页面
- python-3.x - df.Commission.value - AttributeError:“系列”对象没有属性“值”
- python - 如何处理预测任务中的多个类别
- nuget - 未列出/不推荐使用的包的 NuGet API
- php - 如何检索重复数据
- mysql - 如果存在,如何删除表 ___; 作品?
- sockets - 我通过套接字发送的最大缓冲区大小是否有指导方针?
- moodle - JSXGraph in Moodle: How to use MathJax for text
- java - Spring Data JPA 日期查询不适用于日期和日期大于
- javascript - 在使用 Fetch API React 渲染时使用 JSX 显示 API 信息