1. 程式人生 > 程式設計 >Python tkinter和exe打包的方法

Python tkinter和exe打包的方法

爬蟲程式的核心,爬蟲天眼查的公司資訊類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;

以上就是介面部分,效果如下圖所示:

Python tkinter和exe打包的方法

##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檔案,但會依賴很多檔案(預設選項)|

|-c|–console,–nowindowed 使用控制檯,無介面(預設)|
|-w|–windowed,–noconsole 使用視窗,無控制檯|
|-p|新增搜尋路徑,讓其找到對應的庫|
|-i|改變生成程式的icon圖示|

以上,此爬蟲程式終於完成了,可以上交領導啦~

沒想到竟然有同學需要完整的程式,我只好上傳到github了,傳送門:[email protected]:kestiny/PythonCrawler.git

總結

以上所述是小編給大家介紹的Python tkinter和exe打包的方法,希望對大家有所幫助!