使用Python編寫一個(gè)粘貼python源代碼就能運(yùn)行的工具
源代碼
import wx
import os
import subprocess
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title="Memo Save and Run", size=(500, 400))
panel = wx.Panel(self)
# 創(chuàng)建布局
vbox = wx.BoxSizer(wx.VERTICAL)
# 創(chuàng)建Memo(多行文本框)
self.memo = wx.TextCtrl(panel, style=wx.TE_MULTILINE, size=(480, 200))
vbox.Add(self.memo, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
# 保存按鈕
save_btn = wx.Button(panel, label="保存")
save_btn.Bind(wx.EVT_BUTTON, self.on_save)
vbox.Add(save_btn, flag=wx.ALIGN_CENTER | wx.ALL, border=5)
# 運(yùn)行按鈕
run_btn = wx.Button(panel, label="運(yùn)行")
run_btn.Bind(wx.EVT_BUTTON, self.on_run)
vbox.Add(run_btn, flag=wx.ALIGN_CENTER | wx.ALL, border=5)
panel.SetSizer(vbox)
# 保存路徑
self.save_path = "output.py" # 指定保存路徑
def on_save(self, event):
# 獲取Memo內(nèi)容并保存到文件
content = self.memo.GetValue()
try:
with open(self.save_path, 'w', encoding='utf-8') as f:
f.write(content)
wx.MessageBox(f"文件已保存到 {self.save_path}", "成功")
except Exception as e:
wx.MessageBox(f"保存失敗: {str(e)}", "錯(cuò)誤")
def on_run(self, event):
# 使用python命令運(yùn)行保存的py文件
if os.path.exists(self.save_path):
try:
result = subprocess.run(['python', self.save_path], capture_output=True, text=True)
output = result.stdout + result.stderr
wx.MessageBox(f"運(yùn)行結(jié)果:\n{output}", "運(yùn)行輸出")
except Exception as e:
wx.MessageBox(f"運(yùn)行失敗: {str(e)}", "錯(cuò)誤")
else:
wx.MessageBox("文件不存在,請(qǐng)先保存!", "錯(cuò)誤")
if __name__ == "__main__":
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
功能說明:
界面:
- 包含一個(gè)多行文本框(Memo),用于輸入Python代碼。
- 包含“保存”按鈕,用于將Memo內(nèi)容保存到指定路徑(
output.py)。 - 包含“運(yùn)行”按鈕,用于執(zhí)行保存的Python腳本。
保存功能:
- 點(diǎn)擊“保存”按鈕,Memo中的內(nèi)容會(huì)保存到
self.save_path指定的文件(默認(rèn)為output.py)。 - 保存成功或失敗會(huì)彈出提示框。
- 點(diǎn)擊“保存”按鈕,Memo中的內(nèi)容會(huì)保存到
運(yùn)行功能:
- 點(diǎn)擊“運(yùn)行”按鈕,使用
subprocess.run調(diào)用python命令運(yùn)行保存的output.py文件。 - 運(yùn)行結(jié)果(標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出)會(huì)顯示在彈出的消息框中。
- 如果文件不存在或運(yùn)行失敗,會(huì)顯示錯(cuò)誤提示。
- 點(diǎn)擊“運(yùn)行”按鈕,使用
使用方法:
- 運(yùn)行上述代碼,出現(xiàn)GUI窗口。
- 在Memo中輸入Python代碼,例如:
print("Hello, wxPython!")
- 點(diǎn)擊“保存”按鈕,內(nèi)容會(huì)保存到
output.py。 - 點(diǎn)擊“運(yùn)行”按鈕,程序會(huì)執(zhí)行
output.py并顯示輸出(如Hello, wxPython!)。
注意事項(xiàng):
- 確保系統(tǒng)已安裝Python并配置好環(huán)境變量,以便
subprocess可以調(diào)用python命令。 - 保存路徑
output.py可根據(jù)需要修改為其他路徑(如self.save_path = "C:/path/to/your/file.py")。 - 運(yùn)行的腳本需要是合法的Python代碼,否則會(huì)顯示錯(cuò)誤信息。
- 文件保存和運(yùn)行時(shí)使用了
utf-8編碼,確保輸入內(nèi)容兼容。
運(yùn)行結(jié)果

到此這篇關(guān)于使用Python編寫一個(gè)粘貼python源代碼就能運(yùn)行的工具的文章就介紹到這了,更多相關(guān)Python源代碼運(yùn)行工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)數(shù)組平移K位問題
這篇文章主要介紹了python實(shí)現(xiàn)數(shù)組平移K位問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python+OpenCV實(shí)現(xiàn)信用卡數(shù)字識(shí)別的方法詳解
這篇文章主要介紹了如何利用python?opencv實(shí)現(xiàn)信用卡數(shù)字識(shí)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
Python讀csv文件去掉一列后再寫入新的文件實(shí)例
下面小編就為大家分享一篇Python讀csv文件去掉一列后再寫入新的文件實(shí)例,具有很的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
Python實(shí)現(xiàn)APP自動(dòng)化發(fā)微信群消息的示例代碼
本文主要介紹了Python實(shí)現(xiàn)APP自動(dòng)化發(fā)微信群消息的示例代,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下碼2022-01-01
Python中的numpy數(shù)組維度擴(kuò)展詳解
這篇文章主要介紹了Python中的numpy數(shù)組維度擴(kuò)展詳解,在numpy數(shù)組中,切片功能非常常用,例如x[:]表示取x的所有元素,可以通過在切片中增加None或者np.newaxis實(shí)現(xiàn),它們的作用就是在相應(yīng)的位置上增加一個(gè)維度,在這個(gè)維度上只有一個(gè)元素,需要的朋友可以參考下2023-09-09
python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法
本文主要介紹了python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Python基于PycURL實(shí)現(xiàn)POST的方法
這篇文章主要介紹了Python基于PycURL實(shí)現(xiàn)POST的方法,涉及Python實(shí)現(xiàn)curl傳遞post數(shù)據(jù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

