我正在尝试使用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。
我将如何遍历以创建和显示多个小部件标签,以使其与平均计算所产生的输出相符?我不确定循环适合的位置还是缺少一个简单的步骤?我一直在浏览文档,试图解决问题,但似乎无法使其正常工作。
答案 0 :(得分:1)
首先构造完整的字符串,然后将其设置为rm
文本即可:
line_a