创世魂 发表于 2026-8-2 14:11:06

【解决方案】火山视窗和py代码交互简单案例

本帖最后由 创世魂 于 2026-8-2 23:57 编辑


看到有人问火山和py怎么用,我给大家一个终极方案:

火山自带的案例是稍微有点繁琐复杂。。。
但是这种东西AI最擅长分析了。。直接把火山的例子丢给AI、很快就能给你提炼出想要的信息。。

下面的案例就是我让AI提炼的数据。。AI时代了,要会学会AI来解决问题。。

不要使用网页的分析,要用软件分析:可以使用Trae、WorkBuddy、Qoder、Comate、TRAE Work 或者豆包电脑版。。
当然模型要选择gml5.2或者kimik3或者DeepSeek。。或者千问3.7。。豆包那个智障,想用也可以用,只不过豆包的推理能力不太行。建议最差也是用DeepSeekv4

打开软件后随便打开一个火山项目的文件夹,然后打开AI侧边栏。
AI侧边栏一般都会自动打开,没有自动打开的,在软件的右上角一般都有图标,点就就打开了。



我的提示词就是这么写的,提前把案例源码转换成wsv格式,然后丢给对话框,
如果不在工作目录他可能会请求权限,你同意就行了,然后他就会读取源码。分析内容。
E:\voldev\voldp\samples\vprj_win\samples\vol_python\src

分析一下火山代码是如何和py交互的。
主要是分析一下,传递一个火山变量给py代码,然后py代码执行火山拿到返回数据。。

这个案例太复杂了,给我一个简单的案例。 `g:\Desktop\视窗测试\测试\src\main.wsv` 重写这个源码。



<火山程序 类型 = "通常" 版本 = 1 />

类 我的主窗口 <公开 基础类 = 窗口 @视窗.布局 = "client_size = \"400, 215\"" 标题 = "火山与Python交互简单示例">
{
    变量 编辑框_数值1 <类型 = 编辑框 @视窗.布局 = "id = 101\r\npos = \"30, 20, 150, 30\"" 内容 = "10">
    变量 编辑框_数值2 <类型 = 编辑框 @视窗.布局 = "id = 102\r\npos = \"200, 20, 150, 30\"" 内容 = "20">
    变量 按钮1 <类型 = 按钮 @视窗.布局 = "id = 103\r\npos = \"130, 70, 120, 35\"" 标题 = "调用Python求和">
    变量 标签1 <类型 = 标签 @视窗.布局 = "id = 104\r\npos = \"30, 130, 340, 30\"" 标题 = "结果将显示在这里">

    方法 我的主窗口_创建完毕 <接收事件 类型 = 整数>
    参数 来源对象 <类型 = 我的主窗口>
    参数 标记值 <类型 = 整数>
    {
      // 第一步:初始化Python环境(整个程序只需调用一次)
      如果 (Python.初始化 (, 假) == 假)
      {
            信息框 ("Python初始化失败", "错误")
            返回 (0)
      }

      // 第二步:在Python中定义函数(供后续调用)
      // 等价于Python代码:
      //   def add(a, b):
      //       return a + b
      Python.执行代码 ("def add(a, b):\n    return a + b")

      返回 (0)
    }

    方法 按钮_被单击 <接收事件 类型 = 整数>
    参数 来源对象 <类型 = 按钮>
    参数 标记值 <类型 = 整数>
    {
      如果 (来源对象 == 按钮1)
      {
            // ====== 核心:传火山变量给Python,拿回返回数据 ======
            // 1. 从编辑框取出火山整数变量
            变量 数值1 <类型 = 整数>
            变量 数值2 <类型 = 整数>
            数值1 = 文本到整数 (编辑框_数值1.内容)
            数值2 = 文本到整数 (编辑框_数值2.内容)

            // 2. 调用Python的add函数,把火山变量作为参数传过去
            //    Py对象类.元组(...) 将火山变量打包成Python位置参数
            变量 返回对象 <类型 = Py对象类>
            返回对象 = Python.调用模块函数 ("add", Py对象类.元组 (数值1, 数值2))
            // 3. 将Python返回值转换为火山整数
            变量 结果 <类型 = 整数>
            结果 = (整数)返回对象
            // 4. 显示结果
            标签1.标题 = "计算结果:" + 到文本 (数值1) + " + " + 到文本 (数值2) + " = " + 到文本 (结果)
      }
      返回 (0)
    }
}

没什么鱼 发表于 2026-8-2 15:35:40

666666666666666666 火山的例程总是吧一堆功能写在一页代码里,不够清晰,不好理解,如果每个功能或者例程独立分开来写,就容易理解了

创世魂 发表于 2026-8-3 00:06:08

没什么鱼 发表于 2026-8-2 15:35
666666666666666666 火山的例程总是吧一堆功能写在一页代码里,不够清晰,不好理解,如果每个功能或者例程 ...

吴总为了方便通篇跑测试。。所以就挤一堆了。。也没拆开。

fengyishen 发表于 2026-8-3 14:33:49

好评,这样的示例就很清晰了

2002czm 发表于 2026-8-14 09:42:59

好好!!理解了!!
页: [1]
查看完整版本: 【解决方案】火山视窗和py代码交互简单案例