【发布时间】:2021-02-02 04:16:52
【问题描述】:
我正在尝试创建一个 GUI 应用程序,让我可以针对任何其他变量绘制任何变量。这是我的第一个 GUI 应用程序,所以也许我咬得比我能咀嚼的还多。这些变量的值在数组中,我已经将它们分组到集合中——也就是说,我使用 collections.nametuple 对原始值、计算的幅度和相位、峰值索引和归一化值进行分组(如果例如,我没有使用正确的术语)。
我想要做的是让所有这些变量(或各种集合的元素(?)作为两个组合框 xdata 和 ydata 中的选择,以便我可以针对任何其他变量绘制任何变量。这甚至可能吗?这是我正在尝试创建的应用程序的 MainWindow:
我有文件的选择和数据的解析工作,例如,假设我从文件中的数据创建了这两个集合:
type_aData = collections.namedtuple('type_aData',
'A_RX '
'A_RXlogmag '
'A_RXmag'
'A_RXph'
'A_pkMagInd'
'A_RXlogmag_N'
'A_RXmag_N'
'A_RX_N'
'A_RXph_N')
type_distance = collections.namedtuple('type_distance',
'A'
'B')
每个 A_x 都是一个数组,距离 A 和距离 B 也是如此。我想做类似的事情:
self.xdata.addItem(type_distance)
self.ydata.addItem(type_adata)
这样所有距离变量和 aData 变量都暴露在 x 和 y 数据 ComboBoxes 中,但它抱怨参数不能是“type”类型。如果我改为使用 'type_distance',例如,在引号中,那么我得到的只是 ComboBox 中的文本而不是实际变量(没关系,我仍然不知道如何获取从 ComboBox 中选择的值来处理它——这是下一个障碍!)。
简而言之,我最终希望能够从 x 和 y 数据 ComboBoxes 中选择我想要绘制的变量,以便我可以在函数中使用它们来执行以下操作:
self.data_line=self.graphWidget.plot(self.distance.A, self.aData.A_RX)
或
self.data_line=self.graphWidget.plot(self.distance.A, self.aData.A_RXph),
例如。
如果有人能指出一些简单的 GUI 应用程序示例,这些应用程序的功能与我在这里尝试做的类似,那就太好了。我不适合这样做 --- 我只是不知道有什么更好的方法。我觉得我这样做的复杂程度超出了它的需要。
【问题讨论】:
-
你打算
namedtuple做什么?它创建一个类,即type。您可能想要添加这些类的实例,而不是类本身。 -
"这些变量的值在数组中,我已经将它们分组到集合中——也就是说,我使用 collections.nametuple 对原始值进行分组"你在哪里做呢?
-
@juanpa Gracias 由响应者提供。 collections.namedtuple 中的每个条目都是数组。 A_RX1、A_RXlogmax等,距离也是一样,距离A和距离B都是数组。
-
我只是想将它们分组到“结构”中,这样我就可以在函数之间“传递”结构,而不是每个单独的数组。你能用一个例子解释一下“这些类的实例”是什么意思吗?我不是面向对象的程序员,我仍然不完全理解类、方法等......
标签: python pyqt5 pyqtgraph qcombobox namedtuple