橙色小部件开发:如何遍历gui小部件标签以显示计算输出

时间:2018-07-31 14:44:43

标签: python python-3.x loops orange

我正在尝试使用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。

我将如何遍历以创建和显示多个小部件标签,以使其与平均计算所产生的输出相符?我不确定循环适合的位置还是缺少一个简单的步骤?我一直在浏览文档,试图解决问题,但似乎无法使其正常工作。

1 个答案:

答案 0 :(得分:1)

首先构造完整的字符串,然后将其设置为rm文本即可:

line_a