首页
/
每日頭條
/
職場
/
python 桌面開發
python 桌面開發
更新时间:2025-02-24 18:59:38

python 桌面開發(太強了Python開發桌面小工具)1

決定寫這篇文章的初衷是來源于一位小夥伴的問題,關于"如何根據數據源用 Python 自動生成透視表",這個問題背後有個非常好的解決思路,讓代碼替我們做重複的工作,從而減輕工作量,減少出錯。

Python 開發的小工具實際上是将 Python 程序打包成 exe,分享即可用,即便電腦沒有安裝 Python 環境,也可以使用,用代碼提高工作效率,盡量少加班。

python 桌面開發(太強了Python開發桌面小工具)2

内容大綱
  • 明确需求:自動生成透視表【這部分可以換成你的重複性工作】
  • 安裝三方依賴庫:tkinter 和 pyinstaller
  • 代碼實現:包括兩部分 Python 生成透視表和桌面 GUI 聯動設計
  • 打包 Python 程序 生成 exe 可執行文件
  • 解決 exe 文件可能過大問題:安裝虛拟環境
需求背景

将工作中重複性的操作,利用供應商名稱,月份,入庫金額三個字段來生成想要的透視表格式。

python 桌面開發(太強了Python開發桌面小工具)3

安裝三方依賴庫

創建桌面窗口,這裡使用 Tkinter,它是 Python 自帶的 GUI 庫,安裝後即可使用。

pip install tkinter

使用 pyinsatller 将程序打包成 exe,好處是不需要将代碼部署到服務器,直接将打包好的 exe 發給對方,就能直接使用,對于這種小而輕的功能非常友好。

pip install pyinstaller

代碼實現

Excel 文件生成透視表和篩選數據,文件名:excel_to_pivot.py

import Pandas as pd import numpy as np class ExcelToPivot(object): def __init__(self, filename, file_path): self.file_name = filename self.file_path = file_path """ excel自動轉透視表功能 返回透視結果 """ def excel_Pivot(self): print(self.file_path) data = pd.read_excel(self.file_path) data_pivot_table = pd.pivot_table(data, index=['供應商名稱', '月份'], values=["入庫金額"], aggfunc=np.sum) return data_pivot_table """ 按條件篩選,并保存 """ def select_data(self, name, month): data_pivot_table = self.excel_Pivot() data_new = data_pivot_table.query('供應商名稱 == ["{}"] & 月份 == {}'.format(name, month)) data_new.to_excel('{}.xlsx'.format(str(self.file_name).split('.')[0])) return '篩選完成!' if __name__ == '__main__': filename = input("請輸入文件名字:") path = 'C:/Users/cherich/Desktop/' filename pross = ExcelToPivot(filename, path) print(pross.select_data("C", 4))

python 桌面開發(太強了Python開發桌面小工具)4

設計桌面窗口功能,文件名:opration.py

from tkinter import Tk, Entry, Button, mainloop import tkinter.filedialog import excel_to_pivot from tkinter import messagebox from tkinter import ttk def Upload(): global filename, data_pivot_table try: filename = tkinter.filedialog.askopenfilename(title='選擇文件') pross = excel_to_pivot.ExcelToPivot(str(filename).split('/')[-1], filename) data_pivot_table = pross.excel_Pivot() messagebox.showinfo('Info', '轉換成功!') except Exception as e: print(e) messagebox.showinfo('Info', '轉換失敗!') def select(name, month): try: print('供應商名稱 == ["{}"] & 月份 == {}'.format(name, month)) data_new = data_pivot_table.query('供應商名稱 == ["{}"] & 月份 == {}'.format(name, month)) data_new.to_excel('{}.xlsx'.format(str(filename).split('.')[0])) messagebox.showinfo('Info', '篩選完成并生成文件!') root.destroy() except Exception as e: print(e) messagebox.showinfo('Info', '篩選失敗!') root = Tk() root.config(background="#6fb765") root.title('自動轉透視表小工具') root.geometry('500x250') e1 = Entry(root, width=30) e1.grid(row=2, column=0) btn1 = Button(root, text=' 上傳文件 ', command=Upload).grid(row=2, column=10, pady=5) box1 = ttk.Combobox(root) # 使用 grid() 來控制控件的位置 box1.grid(row=5, sticky="NW") # 設置下拉菜單中的值 box1['value'] = ('A', 'B', 'C', 'D', '供應商') # 通過 current() 設置下拉菜單選項的默認值 box1.current(4) box2 = ttk.Combobox(root) box2.grid(row=5, column=1, sticky="NW") box2['value'] = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '月份') box2.current(12) # 編寫回調函數,綁定執行事件 def func(event): global b1, b2 b1 = box1.get() b2 = box2.get() # 綁定下拉菜單事件 box1.bind("<<ComboboxSelected>>", func) box2.bind("<<ComboboxSelected>>", func) btn2 = Button(root, text=' 篩選數據 ', command=lambda: select(b1, b2)).grid(row=30, column=10, pady=5) mainloop()

python 桌面開發(太強了Python開發桌面小工具)5

如果運行結果如上,說明代碼沒有問題了,可以進行下一步。

打包 Python 程序生成 exe

打開 DOS 窗口并切換到 兩個 py 文件所在的目錄,注意路徑中不要有中文。

pyinsatller -F -w opration.py

python 桌面開發(太強了Python開發桌面小工具)6

pyinstaller 指令的常見可選參數:

  • -i 給應用程序添加圖标
  • -F 指定打包後隻生成一個exe格式的文件
  • -D –onedir 創建一個目錄,包含exe文件,但會依賴很多文件(默認選項)
  • -c –console, –nowindowed 使用控制台,無界面(默認)
  • -w –windowed, –noconsole 使用窗口,無控制台
  • -p 添加搜索路徑

python 桌面開發(太強了Python開發桌面小工具)7

python 桌面開發(太強了Python開發桌面小工具)8

在當前的目錄下,将會生成兩個文件夾:build 和 dist。dist 裡面就是所有可執行 exe 文件,發送快捷方式到桌面,點擊 opration.exe 就能運行了,可以發它的快捷方式發送到桌面,雙擊就可以。

解決 exe 文件可能過大問題

有的夥伴 Python 環境剛安裝沒多久,可能不存在這個文件過大的問題。像我的電腦裡安裝了 Python 很多的依賴包和 anaconda 等等,打包出來的文件居然 660M,打包時間長,執行時還卡,後來經過整改縮小到 31M,打包快,秒級執行。解決方案是在 Windows 系統下安裝一個 Python 的虛拟環境,前提是已經在電腦上安裝過 Python 才可以進行如下操作。

python 桌面開發(太強了Python開發桌面小工具)9

找到 Python 所在路徑,如果忘記了,可以在電腦左下角搜索【編輯系統環境變量】——【用戶變量】——【PATH】中找到

python 桌面開發(太強了Python開發桌面小工具)10

python 桌面開發(太強了Python開發桌面小工具)11

配置虛拟環境

虛拟環境可以理解為是 Python 解釋器的一個副本,在這個環境你可以安裝私有包,而且不會影響系統中安裝的全局 Python 解釋器。虛拟環境非常有用,可以在系統的 Python 解釋器中避免包的混亂和版本的沖突。

重要是不同虛拟環境可以搭建不同的 Python 版本,創建時候選擇,我們這裡需要一個相對 "幹淨" 的 Python 環境,沒有安裝過多依賴包,避免 exe 打包文件過大,所以用到虛拟環境。

安裝虛拟環境依賴包

pip install virtualenv pip install virtualenvwrapper-win

創建虛拟環境命令

mkvirtualenv -p="C:\Users\cherich\AppData\Local\Programs\Python\Python38\python.exe" py38

進入虛拟環境,可以看到隻有幾個默認的 Python 庫

python 桌面開發(太強了Python開發桌面小工具)12

這時可以測試一下代碼,是否缺少相關依賴,比如我這個缺少 Pandas,openpyxl,依次按照 pip install 包名安裝即可,非常重要的點:pyinstaller 必須重新安裝,文件才會縮小。

python 桌面開發(太強了Python開發桌面小工具)13

上述操作完成後,打包就可以了,最後退出虛拟環境即可。

python 桌面開發(太強了Python開發桌面小工具)14

退出虛拟環境

deactivate

python 桌面開發(太強了Python開發桌面小工具)15

python 桌面開發(太強了Python開發桌面小工具)16

python 桌面開發(太強了Python開發桌面小工具)17

整個自動化思路的實現就完成了,大家可以将整個流程套用到你現有的重複性工作中,在過程中有兩個需要注意的點,如下:

盡量不要用中文路徑,要不會報些莫名其妙的錯誤。

導包是盡量避免使用 import * 導入不必要的包,節省打包和執行時間。

讓代碼自動工作,省下來的時間,摸摸魚,打打小遊戲不好麼~

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
電工職業資格證在哪裡報考好一點(職業技能電工證很難考)
電工職業資格證在哪裡報考好一點(職業技能電工證很難考)
  目前,我國的電工證有四大類,特種作業操作證、電工進網作業許可證、職業資格證書、建築施工特種操作資格證。今天我們來介紹一下其中的特種作業操作證。特種作業操作證:作業種類:電工(俗稱操作證、上崗證),分類:高壓運行維護作業、高壓安裝修造作業、低壓電工作業、安裝、維修、發電、配電。自2010年後,老版特種作業操作證(IC卡)樣本改用二代身份證似的IC卡類新版中...
2025-02-24
加油站加完油丢錢怎麼處理(車主加油後把錢扔地上)
加油站加完油丢錢怎麼處理(車主加油後把錢扔地上)
  封面新聞記者 謝傑 趙紫君 劉虎   “奔馳車加完油後扔錢在地上,讓女加油工自己去撿。撿完錢後,她默默地背着車擦眼淚……”這兩天,一則奔馳車主加油後扔錢在地的消息,引發全網關注。      加油站員工将地上的現金撿起(視頻截圖)。   事情究竟發生在哪裡?是怎麼回事?1月29日,封面新聞記者多方了解,采訪到車主、事發加油站、加油站員工,還原事情經過。  ...
2025-02-24
主播被仲裁要求賠錢後還要直播嗎(又一跳槽主播被拘留15天并賠兩千萬)
主播被仲裁要求賠錢後還要直播嗎(又一跳槽主播被拘留15天并賠兩千萬)
  各位小夥伴們大家好呀,這裡是每天都會給大家帶來遊戲資訊的小泛團。      近日有小夥伴爆料稱名為賞金術士的英雄聯盟主播由于在與鬥魚的跳槽官司中敗訴,被判賠償接近兩千萬的賠償金,而賞金術士并沒有執行自己償還違約金的義務,從而被納入了失信人員名單,而且還被拘留了15天。這到底是怎麼一回事呢?      說起賞金術士,相信各位英雄聯盟的老玩家應該都不會太陌生...
2025-02-24
塗松岩演技派完整版(塗松岩上演塗式浪漫生命緣)
塗松岩演技派完整版(塗松岩上演塗式浪漫生命緣)
  今日21:18,由中國人壽獨家冠名的北京衛視大型醫療“治愈系”紀實季播節目《生命緣·生命的禮物》第二季第五期治愈之旅即将開啟。4歲女孩彤彤突發腦腫瘤,生命垂危。“陽光使者”塗松岩溫暖探望,将生命的禮物與祝福送給彤彤及家人。      四歲女兒突患腦腫瘤 急診手術隻為“保命”   “誰也沒有想到,明天孩子就可能沒(了)...”四歲的彤彤一直是爸爸媽媽眼裡的...
2025-02-24
面試要注意哪些事項(盤點那些面試中的尴尬事兒)
面試要注意哪些事項(盤點那些面試中的尴尬事兒)
  說到視頻面試相信大家都不陌生了,視頻面試的好處有:   ① 打破空間束縛,足不出戶便可面試;   ② 縮減成本,一部通訊設備即可面試;   ③ 提高效率,招人和求職時間得到提速。   俗話說,世界上本沒有路,走的人多了變成了路。   之前菌想說,常在路邊走,哪有不丢鞋?   以前有個熱搜#上網課的尴尬瞬間#,之前菌強烈建議熱搜榜再新增一個,#視頻面試中的...
2025-02-24
Copyright 2023-2025 - www.tftnews.com All Rights Reserved