User Tools

Site Tools

study:python-topic:20241112-004:index

tkinter 打包成exe執行檔 (2024-11-12)

Local Backup

  • 1.安裝pyinstaller
    pip install pyinstaller
  • 2.打包
    • 開啟cmd,切換到需要打包的檔案(demo.py)目錄。執行
      pyinstaller -F -w demo.py<sxh>產生的exe檔就在子目錄dist中。 -F表示指定打包後只產生一個exe格式的文件,-w表示窗口,無控制台。
        * 3.修改exe圖標<sxh>-i icon.ico 或者 --icon=icon.ico
      圖示檔案放在要打包的檔案同目錄中。
  • 4.替換tk預設圖標
    • 如果文件內採用自訂的圖標取代tk預設圖標,使用說明文件的方法root.iconbitmap(icon.ico)
    • 取代tk圖標後,打包的exe執行失敗。原因是圖示沒有打進去,解決方法是打包成資料夾,或是把圖示轉換成base64資料。
    • # 這段程式可將圖示 gen.ico 轉換成 icon.py 檔案裡的 base64 數據
      import base64
      open_icon = open("gen.ico","rb")
      b64str = base64.b64encode(open_icon.read())
      open_icon.close()
      write_data = "img = '{0}'".format(b64str)
      f = open("icon.py","w+")
      f.write(write_data)
      f.close()
    • 修改主程式:
      import base64
      from icon import img
      import os
       
      # 將import進來的icon.py裡的資料轉換成臨時檔案tmp.ico,作為圖示
      tmp = open('tmp.ico', 'wb+')
      tmp.write(base64.b64decode(img))
      tmp.close()
      root.iconbitmap('tmp.ico')
      os.remove('tmp.ico')
          
      MainSerialToolUI(master=root)
      root.resizable(False, False)
      root.mainloop()

Permalink study/python-topic/20241112-004/index.txt · Last modified: 2024/11/12 09:10 by jethro

oeffentlich