易函数视窗编程系统(一键编译任意python脚本),由精易论坛制作开发的一个Python编程工具,功能强大,可以轻松编辑任意Python脚本,编写环境更加亲和,下面给出易函数视窗编程系统的详细安装教程以及下载资源链接,欢迎经常编写Python程序的朋友们下载体验。
运行环境
window系统 或 mac os系统
python 3.7 及以上 anaconda 集成环境
代码开发工具 Pycharm
Pycharm 中文提示插件
安装步骤
1. 安装 python anaconda 集成环境
到 anaconda 下载 python 运行环境 最新版
我建议是安装 3.7 的版本
2. 安装 pycharm
下载社区版是免费的
https://www.jetbrains.com/pycharm/
点击下载社区版pycharm
3. 安装 pycharm 插件 中文提示插件 以及 pycharm中文界面汉化包
搜索在插件中搜索 chinese 安装两个插件
4. 配置pip镜像加速
在windows环境下修改pip镜像源的方法
1.在windows文件管理器中,输入**%APPDATA%**
2.在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件
在新建的pip.ini文件中输入以下内容,文件路径
C:\Users\Administrator\AppData\Roaming\pip\pip.ini
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
5. 安装 易函数 pyefun
第一次安装易函数时使用
pip install pyefun -i https://mirrors.aliyun.com/pypi/simple/
升级易函数时使用
pip install -U pyefun
6. 使用 pyefun 易函数
from pyefun import *
提示: 如果你的程序是需要打包编译为exe的必须使用import pyefun as efun 而不能是import *
打包使用 Nuitka python打包工具使用教程
7. 安装 易函数视窗编程系统
视频教程 bilibili 易函数视窗编程系统安装及使用教程
编写功能代码
import pyefun.wxefun as wx
import pyefun as efun
import pyefun.compile as compile
import webbrowser
class FileDrop(wx.FileDropTarget):
def __init__(self):
wx.FileDropTarget.__init__(self)
def OnDropFiles(self, x, y, filePath):
文件路径 = filePath[0]
G.app.窗口1.选择编译文件路径(文件路径)
return True
compile.隐藏控制台窗口()
class 窗口1(wx.窗口):
def __init__(self):
self.初始化界面()
def 初始化界面(self):
#########以下是创建的组件代码#########
wx.窗口.__init__(self, None, title='易函数一键编译任意python脚本工具 易函数代码仓库:https://gitee.com/duolabmeng666/pyefun', size=(732, 450), name='frame', style=541072449)
self.容器 = wx.容器(self)
self.Centre()
self.窗口1 = self
self.窗口1.播放次数 = wx.播放次数.循环播放
self.窗口1.位置 = wx.窗口位置.通常
self.标签1 = wx.标签(self.容器, size=(151, 32), pos=(6, 13), label='欲编译的python文件路径', style=2321)
self.编辑框_文件路径 = wx.编辑框(self.容器, size=(459, 32), pos=(162, 6), value='', style=0)
self.编辑框_文件路径.最大允许长度 = 0
self.按钮_选择python文件 = wx.按钮(self.容器, size=(67, 32), pos=(637, 7), label='选择')
self.按钮_选择python文件.绑定事件(wx.事件.被单击, self.按钮_选择python文件_被单击)
self.编辑框_日志框 = wx.编辑框(self.容器, size=(700, 180), pos=(6, 226), value='', style=1073741856)
self.编辑框_日志框.最大允许长度 = 0
self.编辑框_可执行文件路径 = wx.编辑框(self.容器, size=(459, 32), pos=(162, 88), value='', style=0)
self.编辑框_可执行文件路径.最大允许长度 = 0
self.按钮_选课可执行文件 = wx.按钮(self.容器, size=(67, 32), pos=(637, 87), label='选择')
self.按钮_选课可执行文件.绑定事件(wx.事件.被单击, self.按钮_选课可执行文件_被单击)
self.按钮_打开应用目录 = wx.按钮(self.容器, size=(140, 28), pos=(6, 46), label='打开编译目录')
self.按钮_打开应用目录.绑定事件(wx.事件.被单击, self.按钮_打开应用目录_被单击)
self.组合框1 = wx.组合框(self.容器, value='', pos=(7, 140), choices=[], style=wx.CB_READONLY)
self.组合框1.SetSize((140, 25))
self.组合框1.置列表项目(['mingw64编译器', 'mingw32编译器'])
self.按钮_执行查找依赖 = wx.按钮(self.容器, size=(140, 28), pos=(6, 90), label='执行查找依赖')
self.按钮_执行查找依赖.绑定事件(wx.事件.被单击, self.按钮_执行查找依赖_被单击)
self.选择框_编译 = wx.选择框(self.容器, size=(140, 30), pos=(162, 140), label='编译', style=wx.CHK_2STATE)
self.选择框_自动查找依赖 = wx.选择框(self.容器, size=(140, 30), pos=(363, 140), label='自动查找依赖', style=wx.CHK_2STATE)
self.按钮_写出编译脚本 = wx.按钮(self.容器, size=(140, 28), pos=(564, 183), label='写出编译脚本')
self.按钮_写出编译脚本.绑定事件(wx.事件.被单击, self.按钮_写出编译脚本_被单击)
self.编辑框_编译目录 = wx.编辑框(self.容器, size=(459, 32), pos=(162, 47), value='', style=0)
self.编辑框_编译目录.最大允许长度 = 0
self.按钮7 = wx.按钮(self.容器, size=(67, 32), pos=(637, 48), label='选择')
self.按钮7.绑定事件(wx.事件.被单击, self.按钮_选择编译目录_被单击)
self.按钮_自动检查编译环境 = wx.按钮(self.容器, size=(140, 28), pos=(6, 183), label='自动检查编译环境')
self.按钮_自动检查编译环境.绑定事件(wx.事件.被单击, self.按钮_查看环境_被单击)
self.按钮_开始编译 = wx.按钮(self.容器, size=(140, 28), pos=(564, 140), label='开始执行')
self.按钮_开始编译.绑定事件(wx.事件.被单击, self.按钮_开始编译_被单击)
self.标签2 = wx.标签(self.容器, size=(171, 19), pos=(162, 188), label='如需帮助请看易函数的帮助文档', style=2321)
self.标签2.字体 = wx.Font(9, 74, 90, 400, True, 'Microsoft YaHei UI', 28)
self.标签2.绑定事件(wx.事件.鼠标左键被按下, self.标签2_鼠标左键被按下)
self.标签3 = wx.标签(self.容器, size=(176, 19), pos=(359, 188), label='提问请到易函数的github或码云', style=2321)
self.标签3.字体 = wx.Font(9, 74, 90, 400, True, 'Microsoft YaHei UI', 28)
self.标签3.绑定事件(wx.事件.鼠标左键被按下, self.标签3_鼠标左键被按下)
#########以上是创建的组件代码##########
self.组合框1.置选中项(0)
self.选择框_编译.置选中状态(True)
self.选择框_自动查找依赖.置选中状态(True)
# 注册拖放文件对象
self.fileDrop = FileDrop()
self.SetDropTarget(self.fileDrop)
#########以下是组件绑定的事件代码#########
def 按钮_选择python文件_被单击(self, event):
print("按钮_选择python文件_被单击")
文件路径 = wx.组件_文件选择器()
self.选择编译文件路径(文件路径)
def 选择编译文件路径(self, 文件路径):
self.编辑框_文件路径.内容 = 文件路径
编译目录 = efun.路径优化(efun.文件_取目录(文件路径) + r"/o")
self.编辑框_编译目录.内容 = 编译目录
文件名 = efun.strCut(efun.文件_取文件名(文件路径), "$.")
文件运行路径 = efun.路径优化(r"{1}\{0}.dist\{0}.exe".format(文件名, 编译目录))
self.编辑框_可执行文件路径.内容 = 文件运行路径
def 按钮_选择编译目录_被单击(self, event):
print("按钮_选择编译目录_被单击")
文件路径 = wx.组件_目录选择器()
self.编辑框_编译目录.内容 = 文件路径
def 按钮_查看环境_被单击(self, event):
self.选择编译器()
print("按钮_查看环境_被单击")
if compile.初始化编译环境():
输入到日志窗口("编译器准备完毕")
else:
输入到日志窗口("自动准备编译器失败了 请配置好 python环境")
list = [
"运行目录 " + efun.取运行目录(),
"gcc版本 " + compile.取gcc版本(),
"nuitka版本 " + compile.取nuitka版本(),
"python版本 " + compile.取python版本(),
"python路径 " + compile.取python执行路径(),
"python包路径 " + compile.取pythonSitePackages目录(),
]
print(list)
wx.MessageBox("\n".join(list))
def 按钮_打开应用目录_被单击(self, event):
print("按钮_打开应用目录_被单击")
compile.运行命令("explorer.exe " + self.编辑框_编译目录.内容)
def 选择编译器(self):
item = self.组合框1.取选中项文本()
if item == "mingw64编译器":
pass
编译器目录 = efun.路径优化(efun.取运行目录() + "/bulidLib/mingw64/bin")
if not efun.文件是否存在(编译器目录):
编译器目录 = ""
if item == "mingw32编译器":
pass
编译器目录 = efun.路径优化(efun.取运行目录() + "/bulidLib/mingw32/bin")
if not efun.文件是否存在(编译器目录):
编译器目录 = ""
if 编译器目录 != "":
compile.编译器配置.默认编译器路径 = 编译器目录
def 按钮_开始编译_被单击(self, event):
if self.编辑框_文件路径.内容 == "":
return
if self.编辑框_编译目录.内容 == "":
return
文件路径 = self.编辑框_文件路径.内容
编译目录 = self.编辑框_编译目录.内容
文件目录 = efun.路径优化(efun.文件_取目录(文件路径))
文件名 = efun.strCut(efun.文件_取文件名(文件路径), "$.")
if 编译目录 == "":
编译目录 = efun.路径优化(efun.文件_取目录(文件路径) + r"/o")
文件运行路径 = efun.路径优化(r"{1}\{0}.dist\{0}.exe".format(文件名, 编译目录))
self.编辑框_可执行文件路径.内容 = 文件运行路径
self.选择编译器()
print("按钮_开始编译_被单击")
if compile.初始化编译环境():
输入到日志窗口("编译器准备完毕")
输入到日志窗口("开始编译")
不编译 = self.选择框_编译.是否选中() == False
不寻找依赖 = self.选择框_自动查找依赖.是否选中() == False
compile.编译文件(
self.编辑框_文件路径.内容,
编译目录=self.编辑框_编译目录.内容,
编译器目录="",
不编译=不编译,
不寻找依赖=不寻找依赖
)
else:
输入到日志窗口("自动准备编译器失败了 请配置好 python环境")
def 按钮_执行查找依赖_被单击(self, event):
print("按钮_执行查找依赖_被单击")
文件运行路径 = self.编辑框_可执行文件路径.内容
文件运行目录 = efun.文件_取目录(文件运行路径)
while compile.自动处理依赖缺失问题(文件运行路径, 文件运行目录):
pass
def 按钮_选课可执行文件_被单击(self, event):
print("按钮_选课可执行文件_被单击")
文件路径 = wx.组件_文件选择器()
self.编辑框_可执行文件路径.内容 = 文件路径
def 按钮_写出编译脚本_被单击(self, event):
print("按钮_写出编译脚本_被单击")
模板文件 = "" + efun.读入文本(efun.路径优化(efun.取运行目录() + "/resources/scriptTpl.py"))
模板文件 = efun.子文本替换(模板文件, r'{{文件路径}}', self.编辑框_文件路径.内容)
模板文件 = efun.子文本替换(模板文件, r'{{编译目录}}', self.编辑框_编译目录.内容)
文件名 = efun.文件_取文件名(self.编辑框_文件路径.内容, False)
目录 = efun.文件_取目录(self.编辑框_文件路径.内容)
编译文件路径 = efun.路径优化(目录 + "/编译脚本_{}.py".format(文件名))
if not efun.文件是否存在(编译文件路径):
efun.写到文件(编译文件路径, 模板文件)
输入到日志窗口("编译脚本写出到 {}".format(编译文件路径))
else:
输入到日志窗口("编译文件已存在 {} 请删除后再生成".format(编译文件路径))
def 标签2_鼠标左键被按下(self, event):
print("标签2_鼠标左键被按下")
webbrowser.open('https://www.kancloud.cn/duolabmeng/pyefundoc/content')
def 标签3_鼠标左键被按下(self, event):
print("标签3_鼠标左键被按下")
webbrowser.open('https://gitee.com/duolabmeng666/pyefun')
#########以上是组件绑定的事件代码#########
class 应用(wx.App):
def OnInit(self):
self.窗口1 = 窗口1()
self.窗口1.Show(True)
return True
class 全局变量:
app = None
isinstance(app, 应用)
G = 全局变量
def 输入到日志窗口(text):
pass
# print(text)
if (efun.取文本长度(G.app.窗口1.编辑框_日志框.内容) > 10000):
G.app.窗口1.编辑框_日志框.内容 = ""
G.app.窗口1.编辑框_日志框.write(efun.取现行时间().到文本() + " " + text + "\n")
wx.GetApp().Yield()
compile.日志.设置日志回调函数(输入到日志窗口)
if __name__ == '__main__':
G.app = 应用()
G.app.MainLoop()