gpt4 book ai didi

python - 橙色小部件开发: How to iterate through gui widget label to display output of calculation

转载 作者:行者123 更新时间:2023-12-01 09:11:38 24 4
gpt4 key购买 nike

我正在尝试使用 Orange 创建一个简单的小部件。它计算给定数据输入的平均值,但我不确定如何迭代 gui 小部件标签以在上传到 Orange 时显示小部件框中的每个实例。

import Orange
import Orange.data
from Orange.widgets.widget import OWWidget, Input, Output
from Orange.widgets import gui

class OWtest(OWWidget):
name = "Mean Data"
description = "Mean of data attributes"
#icon = ".svg"
priority = 20

class Inputs:
data = Input("Data", Orange.data.Table)

class Outputs:
infoData = Output("Info Data", Orange.data.Table)

want_main_area = False

def __init__(self):
super().__init__()
box = gui.widgetBox(self.controlArea, "Info")
self.line_a = gui.widgetLabel(box, 'No data present')

@Inputs.data
def set_data(self, dataset):
if dataset is not None:
for d in dataset:
print(d)
average = lambda x: sum(x)/len(x)
for x in dataset.domain.attributes:
self.line_a.setText("%s %.2f" % (x.name, average([d[x] for d in dataset])))
print("%s %.2f" % (x.name, average([d[x] for d in dataset])))

目前它只在小部件框中显示一行,其中我只定义了 self.line_a。

如何循环创建和显示多个小部件标签以适应平均计算产生的输出?我不确定循环适合在哪里,或者我是否缺少一个简单的步骤?我一直在查看文档并尝试解决问题,但似乎无法使其发挥作用。

最佳答案

首先构造完整的字符串,然后将其设置为 line_a 文本即可解决问题:

        text = '\n'.join("%s %.2f" % (x.name, average([d[x] for d in dataset]))
for x in dataset.domain.attributes)
self.line_a.setText(text)

关于python - 橙色小部件开发: How to iterate through gui widget label to display output of calculation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616145/

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