在光庆虚表中显示python返回数据

redchina 19天前 161

vlistEx 控件需要使用特定的数据结构

使用 fields 定义表头

使用 [@rowindex] 可以自动生成行号

数据需要通过 setTable 方法设置

索引注意事项:

aardio 中数组索引从 0 开始

Python 返回的元组在 aardio 中被转换为数组,同样使用从 0 开始的索引

数据格式:

var t = { fields={"序号","值1","值2","值3"} };

var tt = {};

tt["序号"] = "[@rowindex]";

tt["值1"] = tostring(pyList[0]);

tt["值2"] = tostring(pyList[1]);

tt["值3"] = tostring(pyList[2]);

table.push(t, tt);

表格设置:

mainForm.listview.setTable(t,,{50,150,150,150},1);

这个实现现在可以正确地:

显示 Python 返回的数据

自动生成行号

完整实例代码:

import win.ui;
import console;

import py3;
import godking.vlistEx;
/*DSG{{*/
// 创建窗口
mainForm = win.form(text="Python结果显示";right=500;bottom=400)
mainForm.add(
vlist={cls="vlistEx";left=10;top=10;right=384;bottom=344;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
)
/*}}*/

// Python代码保持不变
var pyCode = /** 
def getList(a,b):   
    return a,b,123 # Python 多返回值实际是返回一个 tuple
**/
py3.exec(pyCode)
//从 py3.main 模块调用 Python 代码定义的函数 
var pyList = py3.main.getList(12,23);
/*
console.log("Python返回值类型:", type(pyList));
console.log("Python返回值内容:", pyList);
*/

// 准备数据 - 使用 vlistEx 的正确方式
var t = { fields={"序号","年龄","金额","备注"} };

for(i=1;20;1){
    var tt={};
    tt["序号"]="[@rowindex]";  // 行序号标记是不允许编辑修改的
    tt["年龄"]=pyList[0];
    tt["金额"]=pyList[1];
    tt["备注"]=pyList[2];
    ..table.push(t,tt);
}
mainForm.vlist.setTable(t,,100,1);
mainForm.show();
win.loopMessage();



最新回复 (2)
  • 光庆 18天前
    1 2

    另一种方法,直接用数组,不用字典:

    import win.ui;
    import console;
    import py3;
    import godking.vlistEx;
    /*DSG{{*/
    // 创建窗口
    mainForm = win.form(text="Python结果显示";right=500;bottom=400)
    mainForm.add(
    vlist={cls="vlistEx";left=10;top=10;right=384;bottom=344;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
    )
    /*}}*/
    
    // Python代码保持不变
    var pyCode = /** 
    def getList(a,b):   
        return a,b,123 # Python 多返回值实际是返回一个 tuple
    **/
    py3.exec(pyCode)
    //从 py3.main 模块调用 Python 代码定义的函数 
    var pyList = py3.main.getList(12,23);
    
    // 准备数据 - 使用 vlistEx 的正确方式
    var t = { };
    for(i=1;20;1){
        ..table.push(t,table.append({"[@rowindex]"},pyList.parseValue()));
    }
    mainForm.vlist.setTable(t,{"序号","年龄","金额","备注"} ,100,1);
    mainForm.show();
    win.loopMessage();


  • redchina 18天前
    0 3

    好,这样更简洁

返回