python - 橙色小部件开发:如何遍历 gui 小部件标签以显示计算输出
问题描述
我正在尝试使用 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)
推荐阅读
- javascript - 从 Rails 控制器传递给 Javascript 函数的参数导致“未定义”
- r - 尽管有错误检查和工作简单示例,但 for 循环计算 IRR 中的 R 替换错误
- php - 我想在 php 中更改 3 种不同类型的字体颜色
- excel - 每次出现不同的值时插入分页符
- django - Django CustomAuthForm 和默认 LoginForm 未引发验证错误
- reactjs - NEXTJS 中的断开功能(服务器端)
- javascript - 如何在 Javascript 中获得点击的 KML 点坐标
- r - 如何查询奇数?
- excel - 过滤和求和分隔的传入数据的函数
- javascript - Woocommerce 清空购物车按钮并显示警告消息