Maison > développement back-end > Tutoriel Python > Trop fort ! Python développe des gadgets de bureau et laisse le code faire le travail répétitif à notre place !

Trop fort ! Python développe des gadgets de bureau et laisse le code faire le travail répétitif à notre place !

WBOY
Libérer: 2023-05-06 11:10:06
avant
2152 Les gens l'ont consulté

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

L'intention initiale de décider d'écrire cet article est venue d'une question d'un ami, sur "Comment utiliser Python pour générer automatiquement un tableau croisé dynamique basé sur la source de données". Il y a une très bonne idée de solution derrière ce problème. , laissez le code le faire à notre place. Effectuez un travail répétitif, réduisant ainsi la charge de travail et les erreurs.

Les gadgets développés par Python emballent en fait des programmes Python dans un exe, qui peut être utilisé après le partage même si l'ordinateur n'a pas d'environnement Python installé, il peut être utilisé pour améliorer l'efficacité du travail et minimiser les heures supplémentaires.

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

Aperçu du contenu

  • Exigences claires : générer automatiquement un tableau croisé dynamique [Cette partie peut être remplacée par votre travail répétitif]
  • Installer des bibliothèques dépendantes tierces : tkinter et pyinstaller
  • Implémentation du code : inclut Python en deux parties génère un tableau croisé dynamique et une conception de liaison avec l'interface graphique du bureau
  • Packages du programme Python pour générer un fichier exécutable exe
  • Résolvez le problème selon lequel le fichier exe peut être trop volumineux : installez un environnement virtuel

1.
Rendez le travail répétitif, utilisez les trois champs de nom du fournisseur, de mois et de montant d'entreposage pour générer le format de tableau croisé dynamique souhaité.


太强了!Python 开发桌面小工具,让代码替我们干重复的工作!2. Installez des bibliothèques dépendantes tierces


Créez une fenêtre de bureau Ici, nous utilisons tkinter, qui est la propre bibliothèque GUI de Python et peut être utilisée après l'installation.

pip install tkinter
Copier après la connexion

Utilisez pyinsatller pour empaqueter le programme dans un exe. L'avantage est que vous n'avez pas besoin de déployer le code sur le serveur. Vous pouvez directement envoyer l'exe empaqueté à l'autre partie et vous pouvez l'utiliser directement. convivial pour cette fonction petite et légère.

pip install pyinstaller
Copier après la connexion

3. Implémentation du code


Fichier Excel pour générer un tableau croisé dynamique et filtrer les données, nom du fichier : 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))
Copier après la connexion

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!Fonction de fenêtre de bureau de conception, nom du fichier : operation.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()
Copier après la connexion

太强了!Python 开发桌面小工具,让代码替我们干重复的工作! si les résultats d'exécution sont comme ci-dessus, indiquant qu'il n'y a aucun problème avec le code et que vous pouvez passer à l'étape suivante.

4. Packagez le programme Python pour générer l'exe


Ouvrez la fenêtre DOS et basculez vers le répertoire où se trouvent les deux fichiers py. Attention à ne pas avoir de caractères chinois dans le chemin.

pyinsatller -F -w opration.py
Copier après la connexion

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!Paramètres facultatifs communs de la commande pyinstaller :


-i Ajouter une icône à l'application
  • -F Spécifie que seul un fichier au format exe sera généré après l'empaquetage

  • -D –onedir Créer un répertoire, contient des fichiers exe, mais dépendra de nombreux fichiers (option par défaut)

  • -c –console, –nowindowed Utiliser la console, pas d'interface (par défaut)

  • -w –windowed, –noconsole Utiliser la fenêtre, non console

  • -p Ajouter un chemin de recherche

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!Dans le répertoire courant, deux dossiers seront générés : build et dist. Dist contient tous les fichiers exe exécutables. Envoyez le raccourci sur le bureau et cliquez sur opration.exe pour l'exécuter. Vous pouvez envoyer son raccourci sur le bureau et double-cliquer dessus.

5. Résolvez le problème du fichier exe peut-être trop volumineux


Certains partenaires viennent d'installer l'environnement Python il n'y a pas longtemps, et ce problème de fichier trop volumineux n'existe peut-être pas. Par exemple, j'ai beaucoup de packages de dépendances Python et anaconda installés sur mon ordinateur. Le fichier empaqueté fait en fait 660 Mo. Il prend beaucoup de temps à empaqueter et est bloqué lors de l'exécution. Plus tard, il a été réduit à 31 Mo après rectification. est rapide et peut être exécuté en quelques secondes. La solution consiste à installer un environnement virtuel Python sous le système Windows. Les opérations suivantes ne peuvent être effectuées que si Python a été installé sur l'ordinateur.


找到 Python 所在路径,如果忘记了,可以在电脑左下角搜索【编辑系统环境变量】——【用户变量】——【PATH】中找到

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

配置虚拟环境

虚拟环境可以理解为是 Python 解释器的一个副本,在这个环境你可以安装私有包,而且不会影响系统中安装的全局 Python 解释器。虚拟环境非常有用,可以在系统的 Python 解释器中避免包的混乱和版本的冲突。

重要是不同虚拟环境可以搭建不同的 Python 版本,创建时候选择,我们这里需要一个相对 "干净" 的 Python 环境,没有安装过多依赖包,避免 exe 打包文件过大,所以用到虚拟环境。

安装虚拟环境依赖包

pip install virtualenv
pip install virtualenvwrapper-win
Copier après la connexion

创建虚拟环境命令

mkvirtualenv -p="C:UserscherichAppDataLocalProgramsPythonPython38python.exe" py38
Copier après la connexion

进入虚拟环境,可以看到只有几个默认的 Python 库

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

这时可以测试一下代码,是否缺少相关依赖,比如我这个缺少 Pandas,openpyxl,依次按照 pip install 包名安装即可,非常重要的点:pyinstaller 必须重新安装,文件才会缩小。

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

上述操作完成后,打包就可以了,最后退出虚拟环境即可。

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

退出虚拟环境

deactivate
Copier après la connexion

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal