self.hi_there[“command”] = self.say_hi
self.hi_there.pack(side=”top”)
self.quit = tk.Button(self, text=”QUIT”, fg=”red”,
command=self.master.destroy)
self.quit.pack(side=”bottom”)
def say_hi(self):
print(“hi there, everyone!”)
root = tk.Tk()
app = Application(master=root)
app.mainloop()
“`
我們將這個(gè)程序保存為hello.py文件,然后在命令行中切換到該文件所在的目錄下,使用以下命令進(jìn)行打包:
“`
pyinstaller –onefile hello.py
“`
該命令將會(huì)生成一個(gè)dist目錄,其中包含了我們的可執(zhí)行文件hello.exe。我們可以在命令行中運(yùn)行該可執(zhí)行文件,看看程序是否正常運(yùn)行。
## 打包包含圖片和其他資源的Tkinter程序
如果我們的Tkinter程序包含了圖片和其他資源文件,我們需要將這些文件一并打包進(jìn)去。假設(shè)我們的程序需要加載一張名為logo.gif的圖片,我們可以在程序中使用以下代碼來加載圖片:
“`
logo = tk.PhotoImage(file=”logo.gif”)
“`
在打包程序時(shí),我們需要將logo.gif文件一并打包進(jìn)去。我們可以在打包命令中添加–add-data選項(xiàng)來指定需要打包的文件:
“`
pyinstaller –onefile –add-data=”logo.gif;.”php打包成exe hello.py
“`
該命令將會(huì)將logo.gif文件打包進(jìn)去,并且在程序運(yùn)行時(shí)將會(huì)從當(dāng)前目錄下加載該文件。
## 打包包含其他Python模塊的Tkinter程序
如果我們的Tkinter程序依賴了其他Python模塊,我們需要將這些模塊一并打包進(jìn)去。假設(shè)我們的程序依賴了requests模塊,我們可以在程序中使用以下代碼來導(dǎo)入該模塊:
“`
import requests
“`
在打包程序時(shí),我們需要將requests模塊一并打包進(jìn)去。我們可以在打包命令中添加–hidden-import選項(xiàng)來指定需要打包的模塊:
“`
pyinstaller –onefile –hidden-import=requests hello.py
“`
該命令將會(huì)將requests模塊打包進(jìn)去,并且在程序運(yùn)行時(shí)將會(huì)從打包文件中加載該模塊。
## 總結(jié)
使用PyInstaller將Tkinter程序打包成exe文件非常簡(jiǎn)單。我們只需要在命令行中執(zhí)行一個(gè)命令,就可以將程序打包成一個(gè)可執(zhí)行文件,并且將所有依賴的庫和資源文件一并打包進(jìn)去。這樣,我們就可以將程序方便地部署到?jīng)]有Python環(huán)境的機(jī)器上運(yùn)行。