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