文章目錄
- 一、實作隨機點名
- 二、pyinstaller打包成exe
- 三、解決使用pyinstaller打包程式時出現 RecursionError 報錯
一、實作隨機點名
# -*- coding: UTF-8 -*-
"""
@File :隨機點名系統.py
@Author :葉庭云
@Date :2020/9/18 18:55
"""
import tkinter as tk
from pandas import read_excel
from random import randint
# 讀取資料
df1 = list(read_excel(r'.\學生名單_test.xls')['姓名'])
df2 = list(read_excel(r'.\學生名單_test.xls')['性別'])
def roll_call(): # 點名
index_ = randint(0, len(df1) - 1) # 產生隨機索引
name = df1.pop(index_) # 彈出隨機索引對應的姓名
sex = df2.pop(index_) # 彈出隨機索引對應的性別
t.insert('insert', f'{name} {sex}\n') # 插入到tkinter界面
win = tk.Tk()
# 設定視窗title和大小
win.title('隨機點名系統')
win.geometry('600x600')
# Entry 單行文本
L = tk.Label(win, bg="yellow", text="隨機點名系統", font=("KaiTi", 26), width=36, height=3)
L.place(x=0, y=0)
# 設定隨機點名按鈕 退出系統按鈕
b1 = tk.Button(win, bg='red', text="隨機點名", width=25, height=2, command=roll_call)
b1.place(x=80, y=200)
b2 = tk.Button(win, bg='red', text="退出系統", width=25, height=2, command=win.quit)
b2.place(x=325, y=200)
# Entry 單行文本
L = tk.Label(win, text="點到的學生名單如下", font=("KaiTi", 18), width=36, height=1)
L.place(x=90, y=315)
# 設定多行文本框 寬 高 文本框中字體 選中文字時文字的顏色
t = tk.Text(win, width=36, height=8, font=("KaiTi", 24), selectforeground='red') # 顯示多行文本
t.place(x=10, y=350)
win.mainloop()
運行效果如下:

二、pyinstaller打包成exe
PyInstaller是一個跨平臺的Python應用打包工具,支持Windows/Linux/MacOS三大主流平臺,能夠把 Python 腳本及其所在的 Python 解釋器打包成可執行檔案,從而允許最終用戶在無需安裝 Python 的情況下執行應用程式,
pyinstaller安裝
pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pyinstaller打包python程式
PyInstaller 最簡單使用只需要指定作為程式入口的腳本檔案,PyInstaller 執行打包程式后會在當前目錄下創建下列檔案和目錄:main.spec 檔案,其前綴和腳本名相同,指定了打包時所需的各種引數;build 子目錄,其中存放打包程序中生成的臨時檔案,warnxxxx.txt檔案記錄了生成程序中的警告/錯誤資訊,如果 PyInstaller 運行有問題,需要檢查warnxxxx.txt檔案來獲取錯誤的詳細內容,xref-xxxx.html檔案輸出PyInstaller 分析腳本得到的模塊依賴關系圖,dist子目錄,存放生成的最終檔案,如果使用單檔案模式將只有單個執行檔案;如果使用目錄模式的話,會有一個和腳本同名的子目錄,其內才是真正的可執行檔案以及附屬檔案,
命令列輸入以下代碼:
pyinstaller -F -i .icon圖示檔案路徑 .py檔案路徑
-F | --onefile:生成單一的可執行檔案
-i | --icon:為執行檔案指定圖示
默認生成在C盤,找到dist檔案夾里的帶圖示的exe程式,雙擊運行,正常運行進入程式可以玩說明打包程式成功,

運行效果如下:

三、解決使用pyinstaller打包程式時出現 RecursionError 報錯
RecursionError: maximum recursion depth exceeded
執行 pyinstaller,雖然報錯,但會生成 your_filename.spec檔案
pyinstaller -F your_filename.py
在C盤找到 your_filename.spec 檔案,打開進行編輯,添加以下陳述句
# 對遞回深度進行設定
import sys
sys.setrecursionlimit(100000)

再次執行 pyinstaller 和 your_filename.spec檔案
pyinstaller C:\Users\Administrator\your_filename.spec
成功將python程式打包成exe,解決了問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/135154.html
標籤:其他
