易函數(shù)視窗編程系統(tǒng)(一鍵編譯任意python腳本),由精易論壇制作開發(fā)的一個Python編程工具,功能強大,可以輕松編輯任意Python腳本,編寫環(huán)境更加親和,下面給出易函數(shù)視窗編程系統(tǒng)的詳細安裝教程以及下載資源鏈接,歡迎經(jīng)常編寫Python程序的朋友們下載體驗。
運行環(huán)境
window系統(tǒng) 或 mac os系統(tǒng)
python 3.7 及以上 anaconda 集成環(huán)境
代碼開發(fā)工具 Pycharm
Pycharm 中文提示插件
安裝步驟
1. 安裝 python anaconda 集成環(huán)境
到 anaconda 下載 python 運行環(huán)境 最新版
我建議是安裝 3.7 的版本
2. 安裝 pycharm
下載社區(qū)版是免費的
https://www.jetbrains.com/pycharm/
點擊下載社區(qū)版pycharm
3. 安裝 pycharm 插件 中文提示插件 以及 pycharm中文界面漢化包
搜索在插件中搜索 chinese 安裝兩個插件
4. 配置pip鏡像加速
在windows環(huán)境下修改pip鏡像源的方法
1.在windows文件管理器中,輸入**%APPDATA%**
2.在該目錄下新建pip文件夾,然后到pip文件夾里面去新建個pip.ini文件
在新建的pip.ini文件中輸入以下內(nèi)容,文件路徑
C:\Users\Administrator\AppData\Roaming\pip\pip.ini
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
5. 安裝 易函數(shù) pyefun
第一次安裝易函數(shù)時使用
pip install pyefun -i https://mirrors.aliyun.com/pypi/simple/
升級易函數(shù)時使用
pip install -U pyefun
6. 使用 pyefun 易函數(shù)
from pyefun import *
提示: 如果你的程序是需要打包編譯為exe的必須使用import pyefun as efun 而不能是import *
打包使用 Nuitka python打包工具使用教程
7. 安裝 易函數(shù)視窗編程系統(tǒng)
視頻教程 bilibili 易函數(shù)視窗編程系統(tǒng)安裝及使用教程
編寫功能代碼
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):
#########以下是創(chuàng)建的組件代碼#########
wx.窗口.__init__(self, None, title='易函數(shù)一鍵編譯任意python腳本工具 易函數(shù)代碼倉庫:https://gitee.com/duolabmeng666/pyefun', size=(732, 450), name='frame', style=541072449)
self.容器 = wx.容器(self)
self.Centre()
self.窗口1 = self
self.窗口1.播放次數(shù) = wx.播放次數(shù).循環(huán)播放
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.編輯框_可執(zhí)行文件路徑 = wx.編輯框(self.容器, size=(459, 32), pos=(162, 88), value='', style=0)
self.編輯框_可執(zhí)行文件路徑.最大允許長度 = 0
self.按鈕_選課可執(zhí)行文件 = wx.按鈕(self.容器, size=(67, 32), pos=(637, 87), label='選擇')
self.按鈕_選課可執(zhí)行文件.綁定事件(wx.事件.被單擊, self.按鈕_選課可執(zhí)行文件_被單擊)
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.按鈕_執(zhí)行查找依賴 = wx.按鈕(self.容器, size=(140, 28), pos=(6, 90), label='執(zhí)行查找依賴')
self.按鈕_執(zhí)行查找依賴.綁定事件(wx.事件.被單擊, self.按鈕_執(zhí)行查找依賴_被單擊)
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.按鈕_自動檢查編譯環(huán)境 = wx.按鈕(self.容器, size=(140, 28), pos=(6, 183), label='自動檢查編譯環(huán)境')
self.按鈕_自動檢查編譯環(huán)境.綁定事件(wx.事件.被單擊, self.按鈕_查看環(huán)境_被單擊)
self.按鈕_開始編譯 = wx.按鈕(self.容器, size=(140, 28), pos=(564, 140), label='開始執(zhí)行')
self.按鈕_開始編譯.綁定事件(wx.事件.被單擊, self.按鈕_開始編譯_被單擊)
self.標簽2 = wx.標簽(self.容器, size=(171, 19), pos=(162, 188), label='如需幫助請看易函數(shù)的幫助文檔', 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='提問請到易函數(shù)的github或碼云', style=2321)
self.標簽3.字體 = wx.Font(9, 74, 90, 400, True, 'Microsoft YaHei UI', 28)
self.標簽3.綁定事件(wx.事件.鼠標左鍵被按下, self.標簽3_鼠標左鍵被按下)
#########以上是創(chuàng)建的組件代碼##########
self.組合框1.置選中項(0)
self.選擇框_編譯.置選中狀態(tài)(True)
self.選擇框_自動查找依賴.置選中狀態(tài)(True)
# 注冊拖放文件對象
self.fileDrop = FileDrop()
self.SetDropTarget(self.fileDrop)
#########以下是組件綁定的事件代碼#########
def 按鈕_選擇python文件_被單擊(self, event):
print("按鈕_選擇python文件_被單擊")
文件路徑 = wx.組件_文件選擇器()
self.選擇編譯文件路徑(文件路徑)
def 選擇編譯文件路徑(self, 文件路徑):
self.編輯框_文件路徑.內(nèi)容 = 文件路徑
編譯目錄 = efun.路徑優(yōu)化(efun.文件_取目錄(文件路徑) + r"/o")
self.編輯框_編譯目錄.內(nèi)容 = 編譯目錄
文件名 = efun.strCut(efun.文件_取文件名(文件路徑), "$.")
文件運行路徑 = efun.路徑優(yōu)化(r"{1}\{0}.dist\{0}.exe".format(文件名, 編譯目錄))
self.編輯框_可執(zhí)行文件路徑.內(nèi)容 = 文件運行路徑
def 按鈕_選擇編譯目錄_被單擊(self, event):
print("按鈕_選擇編譯目錄_被單擊")
文件路徑 = wx.組件_目錄選擇器()
self.編輯框_編譯目錄.內(nèi)容 = 文件路徑
def 按鈕_查看環(huán)境_被單擊(self, event):
self.選擇編譯器()
print("按鈕_查看環(huán)境_被單擊")
if compile.初始化編譯環(huán)境():
輸入到日志窗口("編譯器準備完畢")
else:
輸入到日志窗口("自動準備編譯器失敗了 請配置好 python環(huán)境")
list = [
"運行目錄 " + efun.取運行目錄(),
"gcc版本 " + compile.取gcc版本(),
"nuitka版本 " + compile.取nuitka版本(),
"python版本 " + compile.取python版本(),
"python路徑 " + compile.取python執(zhí)行路徑(),
"python包路徑 " + compile.取pythonSitePackages目錄(),
]
print(list)
wx.MessageBox("\n".join(list))
def 按鈕_打開應用目錄_被單擊(self, event):
print("按鈕_打開應用目錄_被單擊")
compile.運行命令("explorer.exe " + self.編輯框_編譯目錄.內(nèi)容)
def 選擇編譯器(self):
item = self.組合框1.取選中項文本()
if item == "mingw64編譯器":
pass
編譯器目錄 = efun.路徑優(yōu)化(efun.取運行目錄() + "/bulidLib/mingw64/bin")
if not efun.文件是否存在(編譯器目錄):
編譯器目錄 = ""
if item == "mingw32編譯器":
pass
編譯器目錄 = efun.路徑優(yōu)化(efun.取運行目錄() + "/bulidLib/mingw32/bin")
if not efun.文件是否存在(編譯器目錄):
編譯器目錄 = ""
if 編譯器目錄 != "":
compile.編譯器配置.默認編譯器路徑 = 編譯器目錄
def 按鈕_開始編譯_被單擊(self, event):
if self.編輯框_文件路徑.內(nèi)容 == "":
return
if self.編輯框_編譯目錄.內(nèi)容 == "":
return
文件路徑 = self.編輯框_文件路徑.內(nèi)容
編譯目錄 = self.編輯框_編譯目錄.內(nèi)容
文件目錄 = efun.路徑優(yōu)化(efun.文件_取目錄(文件路徑))
文件名 = efun.strCut(efun.文件_取文件名(文件路徑), "$.")
if 編譯目錄 == "":
編譯目錄 = efun.路徑優(yōu)化(efun.文件_取目錄(文件路徑) + r"/o")
文件運行路徑 = efun.路徑優(yōu)化(r"{1}\{0}.dist\{0}.exe".format(文件名, 編譯目錄))
self.編輯框_可執(zhí)行文件路徑.內(nèi)容 = 文件運行路徑
self.選擇編譯器()
print("按鈕_開始編譯_被單擊")
if compile.初始化編譯環(huán)境():
輸入到日志窗口("編譯器準備完畢")
輸入到日志窗口("開始編譯")
不編譯 = self.選擇框_編譯.是否選中() == False
不尋找依賴 = self.選擇框_自動查找依賴.是否選中() == False
compile.編譯文件(
self.編輯框_文件路徑.內(nèi)容,
編譯目錄=self.編輯框_編譯目錄.內(nèi)容,
編譯器目錄="",
不編譯=不編譯,
不尋找依賴=不尋找依賴
)
else:
輸入到日志窗口("自動準備編譯器失敗了 請配置好 python環(huán)境")
def 按鈕_執(zhí)行查找依賴_被單擊(self, event):
print("按鈕_執(zhí)行查找依賴_被單擊")
文件運行路徑 = self.編輯框_可執(zhí)行文件路徑.內(nèi)容
文件運行目錄 = efun.文件_取目錄(文件運行路徑)
while compile.自動處理依賴缺失問題(文件運行路徑, 文件運行目錄):
pass
def 按鈕_選課可執(zhí)行文件_被單擊(self, event):
print("按鈕_選課可執(zhí)行文件_被單擊")
文件路徑 = wx.組件_文件選擇器()
self.編輯框_可執(zhí)行文件路徑.內(nèi)容 = 文件路徑
def 按鈕_寫出編譯腳本_被單擊(self, event):
print("按鈕_寫出編譯腳本_被單擊")
模板文件 = "" + efun.讀入文本(efun.路徑優(yōu)化(efun.取運行目錄() + "/resources/scriptTpl.py"))
模板文件 = efun.子文本替換(模板文件, r'{{文件路徑}}', self.編輯框_文件路徑.內(nèi)容)
模板文件 = efun.子文本替換(模板文件, r'{{編譯目錄}}', self.編輯框_編譯目錄.內(nèi)容)
文件名 = efun.文件_取文件名(self.編輯框_文件路徑.內(nèi)容, False)
目錄 = efun.文件_取目錄(self.編輯框_文件路徑.內(nèi)容)
編譯文件路徑 = efun.路徑優(yōu)化(目錄 + "/編譯腳本_{}.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.編輯框_日志框.內(nèi)容) > 10000):
G.app.窗口1.編輯框_日志框.內(nèi)容 = ""
G.app.窗口1.編輯框_日志框.write(efun.取現(xiàn)行時間().到文本() + " " + text + "\n")
wx.GetApp().Yield()
compile.日志.設置日志回調(diào)函數(shù)(輸入到日志窗口)
if __name__ == '__main__':
G.app = 應用()
G.app.MainLoop()