优雅地在Windows窗体与后台运行的Python脚本之间共享变量

3 投票
2 回答
599 浏览
提问于 2025-04-16 12:00

我正在寻找一种优雅的方法,让一个Windows窗体应用程序和在后台运行的Python脚本之间共享一个变量。这个变量主要是用来根据Python脚本中的长时间运行的过程来更新Windows窗体中的进度条。更具体地说,Windows的定时器会每隔n秒触发一次,检查这个变量,然后更新进度条的值。听起来是不是有点傻?我下面会解释一下为什么需要这样做。

我有一个Windows应用程序,允许用户定义一些参数来启动一个长时间运行的过程(Python脚本)。不想详细描述,这个长时间运行的过程会在一段时间内向一个sqlite数据库插入很多(超过10万条)记录。为了让Python脚本尽可能高效,我在Python脚本结束之前不会调用sqlite数据库的提交操作。在提交之前,从Windows应用程序查询sqlite数据库(通过System.Data.Sqlite)总是返回0条记录,无论这个过程进行到什么阶段。

Windows应用程序会知道Python进程总共会插入多少条记录,所以只要能在Python脚本中获取到记录的数量,判断进度就会变得相对简单。

我知道可以用文本文件来实现这个功能,但有没有更好的方法呢?

2 个回答

0

如果你使用 IronPython,那么你可以用Python来创建一个带进度条的窗口,并且可以直接操作这个窗口。

另外,你的Winforms应用程序也可以运行这个脚本,并且可以共享一些变量。

1

最简单的解决办法可能就是让这个Python脚本把信息打印到标准输出上。比如,每当处理一个项目时,就打印一行,显示已经处理了多少个项目(或者显示一个百分比)。然后,表单应用程序可以一行一行地读取这些输出,根据这些信息来更新进度条。

撰写回答