winfrom桌面程序调用python解释器
Winfrom桌面程序调用python解释器执行py脚本后台执行完成具体的功能,为什么要这样处理呢?因为我现在的大部分过项目都是后台的脚本处理,界面基本的输入完成之后,将参数按照规则传入到脚本的入口,根据参数的不同执行不同的脚本流程,如果要修改某一个处理过程或者添加新的模块,不需要修改前台的任何代码,只需要在脚本中修改就可以达到需求的效果,简单、方便,风险较小,影响可控等优点。
因此,我做了一个demo,仅供参考,不足之处,请赐教!
界面如图:
Start_exe_py的执行代码如下:
private void Start_exe_Py_Click(object sender, EventArgs e)
{
string txtName = this.textName.Text.Trim();
string CurentPath = System.Windows.Forms.Application.StartupPath;
string pyExecPath = CurentPath + @"\..\3rdTools\Python27\python.exe";
string pyWorkingDir = CurentPath + @"\..\";
string pyFilePath = CurentPath + @"\..\UserDefinedScripts\Main.py";
string pyArgv = "";
pyArgv = " " + txtName; Cursor.Current = Cursors.WaitCursor;
Process pro = new Process(); //不显示窗口
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.CreateNoWindow = true; //显示窗口
//pro.StartInfo.RedirectStandardOutput = false;
//pro.StartInfo.UseShellExecute = true;
//pro.StartInfo.CreateNoWindow = false; pro.StartInfo.FileName = pyExecPath;
pro.StartInfo.WorkingDirectory = pyWorkingDir;
pro.StartInfo.Arguments = pyFilePath + pyArgv;
pro.Start(); pro.WaitForExit();
Cursor.Current = Cursors.Default;
}
具体的目录结构方式参考:
用户自定义的脚本代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2016-06-30 09:10:44
# @Author : stlong
# @Version : 1.0 import os
import sys def main():
print "Hello Python!"
print raw_input("python input:") if __name__ == '__main__':
print sys.argv[0]
print sys.argv[1]
main()
由于时间关系不足之处,请见谅!
winfrom桌面程序调用python解释器的更多相关文章
- 迁移桌面程序到MS Store(4)——桌面程序调用Win10 API
上一篇我们讨论了如何在转制的桌面程序中,通过StartupTask来实现转制版本的开机自启动.实际操作中,我们通过编辑Packaging工程中的Package.appxmanifest文件,来添加自启 ...
- xcode 程序配置 python 解释器嵌入
1.点击项目->Buid Phases->加号点击 添加RunScript,Shell中写为python路径.一般是/usr/bin/python 2.同样是Build Phases中,L ...
- day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm
复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ...
- day_2安装Python解释器和pycharm
首先我们复习一下昨天的内容 ···重点 1:进制转换:二进制 与 十六进制 1111 0101 1010 转换为 f5a 2:内存分布:堆区 和 栈区 计算机的原理: 控制器 运算器 存储器 inp ...
- 迁移桌面程序到MS Store(12)——WPF使用UWP InkToolbar和InkCanvas
我们在<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>提到了对Win10 API的调用,但仍存在无法在WPF中使用UWP控件的问题,虽然都是XAML控件,但却是两 ...
- 迁移桌面程序到MS Store(13)——动态检查Win10 API是否可用
假设我们现有一个WPF程序,需要支持1903以前的Windows 10版本.同时在1903以后的版本上,额外多出一个Ink的功能.那么我们就可以通过ApiInformation.IsApiContra ...
- aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
网络上大家分享的 aardio + Python 混合开发的文章很多,不得不说 aardio 与 Python 混合开发是真的简单 ! 快速入门 推荐几个快速上手教程:< aardio + P ...
- java调用python程序以及向python程序传递参数
在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...
- Python使用wxPython、py2exe编写桌面程序-乾颐堂
Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序.使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局.在完成编写之后,由于直接的p ...
随机推荐
- python算法-快速排序
快速排序: 学习快速排序,要先复习下递归: 递归的2个条件: 1. 函数自己调用自己 2.有一个退出的条件 练习:基于递归下一个函数,计算n!并且求出当n等于10的值. n!=n * n-1*…..* ...
- Course Machine Learning Note
Machine Learning Note Introduction Introduction What is Machine Learning? Two definitions of Machine ...
- RabbitMQ的transaction、confirm、ack三个概念的解释
在使用RabbitMQ的过程中,肯定会遇到这样的几个概念:transaction.confirm.ack.本文介绍一下这几个概念,以及他们之间的关系. RabbitMQ是采用的AMQP协议,AMQP协 ...
- Python2.6.6升级2.7.3
Python2.7替换2.6: 1.下载Python-2.7.3 #wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 2.解压 ...
- 【bzoj1444】[Jsoi2009]有趣的游戏 AC自动机+矩阵乘法
题目描述 输入 注意 是0<=P 输出 样例输入 样例输出 题解 AC自动机+矩阵乘法 先将所有字符串放到AC自动机中,求出Trie图. 然后构建邻接矩阵:如果x不是某个字符串的末位置,则x连向 ...
- BZOJ 4815 [Cqoi2017]小Q的表格 ——欧拉函数
把式子化简一波. 发现一个比较厉害的性质:每个点只能影响到行列下标$gcd$与它相同的点. 然后就可以计算$\sum_{g<=k}f(g,g)*\sum_{i<=k}\sum_{j< ...
- P3799 妖梦拼木棒 (组合数学)
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数 ...
- day02-菜单处理
解决力度到按钮的级别 ----------------------------------------------------------------------------------------- ...
- N*N数码问题
奇数码问题 时间限制: 1 Sec 内存限制: 128 MB 题目描述 你一定玩过八数码游戏,它实际上是在一个3*3的网格中进行的,1个空格和1~8这8个数字恰好不重不漏地分布在这3*3的网格中. ...
- Nova 组件详解
本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 nova-* 的子服务,下面我们将依次学习最重要的几个.今天先讨论 nova-api 和 nova-cond ...