gpt4 book ai didi

python - QCombobox finData 方法总是返回 -1 和 numpy 数组

转载 作者:行者123 更新时间:2023-12-04 09:16:00 25 4
gpt4 key购买 nike

当使用 numpy 数组添加项目时,我在尝试获取组合框上某些数据的索引时遇到问题,而如果我使用列表,则结果是预期的。

from PySide2 import QtWidgets
import numpy as np


app = QtWidgets.QApplication()

heights_list = [0.52, 1, 2, 3, 4, 12.57, 14.97]
heights_array = np.array([0.52, 1, 2, 3, 4, 12.57, 14.97])

combo_list = QtWidgets.QComboBox()
for height in heights_list:
combo_list.addItem(f"{height:.2f} m", height)

combo_array = QtWidgets.QComboBox()
for height in heights_array:
combo_array.addItem(f"{height:.2f} m", height)

print(combo_list.findData(14.97)) # Print 6
print(combo_array.findData(14.97)) # Print -1

最佳答案

findData() 方法使用模型的 match() 方法,match方法使用 QVariant s进行比较。就其 PySide2(也是 PyQt5)而言,它具有兼容性,可以将 PyObject 转换(它是 C/C++ 中 Python 对象的表示)转换为基本类型,例如 int、float 等,但它不知道如何转换 numpy 对象然后它只存储指针,当比较存储指针的 QVariant 时,它比较内存地址,但作为 2 个不同的对象,它总是会返回它们不是同一个对象。

关于python - QCombobox finData 方法总是返回 -1 和 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63216562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com