Python tkinter和exe打包的方法
阿新 • • 發佈:2020-02-05
爬蟲程式的核心,爬蟲天眼查的公司資訊類TianYanCha已經完成了,並且驗證可以工作,但是給不是專業方面的人用的話,還要安裝Python直譯器,還沒有介面是挺麻煩的,於是就想寫一個簡單的介面,然後打包成可執行程式給女票用。
##tkinter介面
由於我的介面要求很簡單,只是輸入兩個檔案路徑,一個實時輸出資訊的文字框,於是沒有選擇其他的Python介面擴充套件,只是選擇Python的事實介面庫—tkinter。
介面如下:
class Application(tk.Frame): def __init__(self,master=None): tk.Frame.__init__(self,master) self.pack() self.createWidgets() def __del__(self): print('del tianyanche') root.destroy def createWidgets(self): self.labelDest = tk.Label(self) self.labelDest["text"] = '來源路徑:' self.labelDest.grid(row=0,column=0) self.contentDest = tk.StringVar() self.contentDest.set('./work/all.txt') self.entryDest = tk.Entry(self) self.entryDest["textvariable"] = self.contentDest self.entryDest.grid(row=0,column=1) self.labelSuc = tk.Label(self) self.labelSuc["text"] = '成功路徑:' self.labelSuc.grid(row=1,column=0) self.contentSuc = tk.StringVar() self.contentSuc.set('./work/suc.txt') #設定介面的預設值 self.entrySuc = tk.Entry(self) self.entrySuc["textvariable"] = self.contentSuc self.entrySuc.grid(row=1,column=1) self.labelFail = tk.Label(self) self.labelFail["text"] = '失敗路徑:' #設定介面的預設值 self.labelFail.grid(row=2,column=0) self.contentFail = tk.StringVar() self.contentFail.set('./work/fail.txt') #設定介面的預設值 self.entryFail = tk.Entry(self) self.entryFail["textvariable"] = self.contentFail self.entryFail.grid(row=2,column=1) self.buttonStart = tk.Button(self,text = '開始') self.buttonStart['command'] = self.start self.buttonStart['fg'] = 'green' self.buttonStart.grid(row=3,column=0) self.quit = tk.Button(self,text="停止",fg="red",command=self.quit) self.quit.grid(row=3,column=1) self.text = ScrolledText(self) self.text.grid(row=4,columnspan=2) def start(self): self.running = True self.text.insert('end','來源:' + self.contentDest.get() + "\r\n") self.text.insert('end','成功:' + self.contentSuc.get() + "\r\n") self.text.insert('end','失敗:' + self.contentFail.get() + "\r\n") self.tianyancha = TianYanCha.TianYanCha(self.contentSuc.get(),self.contentFail.get()) self.tianyancha.setOutput(self.text) self.td = threading.Thread(target=self.startThread) self.td.setDaemon(True) self.td.start() def quit(self): self.running = False del self.tianyancha print('quit') def startThread(self): self.text.delete(0.0,'end') file = open(self.contentDest.get()) for line in file.readlines(): if self.running == True: self.tianyancha.getCompanyByName(line.strip('\n')) else: print('停止') break;
以上就是介面部分,效果如下圖所示:
##exe打包
Python的常用exe打包有:PyInstaller、py2exe等。我直接選擇了PyInstaller。
PyInstaller安裝:pip install PyInstaller。目前的最新版本3.2。
PyInstaller打包命令:pyinstaller -F -i snail.ico Application.py。
命令釋義:
| 引數|含義|
| :-------------: |:-------------|
|-F|指定打包後只生成一個exe格式的檔案|
|-D|–onedir 建立一個目錄,包含exe檔案,但會依賴很多檔案(預設選項)|
|-w|–windowed,–noconsole 使用視窗,無控制檯|
|-p|新增搜尋路徑,讓其找到對應的庫|
|-i|改變生成程式的icon圖示|
以上,此爬蟲程式終於完成了,可以上交領導啦~
沒想到竟然有同學需要完整的程式,我只好上傳到github了,傳送門:[email protected]:kestiny/PythonCrawler.git
總結
以上所述是小編給大家介紹的Python tkinter和exe打包的方法,希望對大家有所幫助!