Rumah >pembangunan bahagian belakang >Tutorial Python >Terlalu kuat! Python membangunkan alat desktop dan membenarkan kod melakukan kerja berulang untuk kami!

Terlalu kuat! Python membangunkan alat desktop dan membenarkan kod melakukan kerja berulang untuk kami!

WBOY
WBOYke hadapan
2023-05-06 11:10:062118semak imbas

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

Niat asal menulis artikel ini datang daripada soalan seorang rakan, tentang "Cara menggunakan Python untuk menjana jadual pangsi secara automatik berdasarkan sumber data". idea yang baik di sebalik soalan ini Idea penyelesaian adalah untuk membiarkan kod melakukan kerja berulang untuk kita, dengan itu mengurangkan beban kerja dan mengurangkan ralat.

Gajet yang dibangunkan oleh Python sebenarnya membungkus program Python ke dalam exe, yang boleh digunakan selepas berkongsi Walaupun komputer tidak memasang persekitaran Python, ia boleh digunakan untuk meningkatkan kecekapan kerja dan meminimumkan lebih masa.

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

Garis Kandungan

  • Keperluan yang jelas: Menjana jadual pangsi secara automatik [Bahagian ini boleh digantikan dengan kerja berulang anda 】
  • Pasang perpustakaan bergantung tiga pihak: tkinter dan pyinstaller
  • Pelaksanaan kod: termasuk dua bahagian Python untuk menjana jadual pangsi dan reka bentuk pautan GUI desktop
  • Pakej Python Program menjana fail boleh laku exe
  • Selesaikan masalah bahawa fail exe mungkin terlalu besar: pasang persekitaran maya

1 >

akan berfungsi Untuk operasi berulang, gunakan tiga medan nama pembekal, bulan dan jumlah pergudangan untuk menjana format jadual pangsi yang diingini.


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

2. Pasang perpustakaan bergantung pihak ketiga


Buat tetingkap desktop Di sini kami menggunakan tkinter, iaitu GUI Python sendiri perpustakaan. Ia sedia untuk digunakan selepas pemasangan.


pip install tkinter

Gunakan pyinsatller untuk membungkus program ke dalam exe Kelebihannya ialah anda tidak perlu menggunakan kod ke pelayan Anda boleh menghantar exe yang dibungkus secara terus kepada pihak lain dan anda boleh gunakannya terus Untuk yang kecil dan ringan ini Fungsinya sangat mesra pengguna.


pip install pyinstaller

3. Pelaksanaan kod


Fail Excel untuk menjana data jadual pangsi dan penapis, nama fail: 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 开发桌面小工具,让代码替我们干重复的工作!

Reka bentuk fungsi tetingkap desktop, nama fail: 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()

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

Jika hasil larian seperti di atas, bermakna tiada masalah dengan kod, dan anda boleh meneruskan ke langkah seterusnya.

4. Pakej program Python untuk menjana exe


Buka tetingkap DOS dan tukar ke direktori di mana dua fail py berada laluan.


pyinsatller -F -w opration.py

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

Parameter pilihan biasa arahan pyinstaller:


    -i Tambahkan ikon pada aplikasi
  • -F menyatakan bahawa hanya satu fail dalam format exe akan dijana selepas pembungkusan

  • -D –onedir mencipta direktori yang mengandungi fail exe, tetapi akan bergantung pada banyak fail (pilihan lalai)

  • -c –console, –nowindowed Gunakan konsol, tiada antara muka (lalai)

  • -w –windowed, –noconsole Gunakan tetingkap, tiada konsol

  • - p Tambah laluan carian

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

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

Dalam direktori semasa, dua folder akan dijana: bina dan dist. Dist mengandungi semua fail exe boleh laku Hantar pintasan ke desktop dan klik opration.exe untuk menjalankannya Anda boleh menghantar pintasannya ke desktop dan klik dua kali.

5 Selesaikan masalah bahawa fail exe mungkin terlalu besar


Sesetengah rakan kongsi baru sahaja memasang persekitaran Python tidak lama dahulu, jadi masalah fail terlalu besar ini mungkin tidak wujud. . Sebagai contoh, saya mempunyai banyak pakej ketergantungan Python dan anaconda yang dipasang pada komputer saya Fail yang dibungkus sebenarnya 660M Ia mengambil masa yang lama untuk dibungkus dan terperangkap semasa pelaksanaan Kemudian, ia dikurangkan kepada 31M selepas pembetulan adalah pantas dan boleh dilaksanakan dalam beberapa saat. Penyelesaiannya ialah memasang persekitaran maya Python di bawah sistem Windows Operasi berikut hanya boleh dilakukan jika Python telah dipasang pada komputer.


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

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

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

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

配置虚拟环境

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

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

安装虚拟环境依赖包

pip install virtualenv
pip install virtualenvwrapper-win

创建虚拟环境命令

mkvirtualenv -p="C:UserscherichAppDataLocalProgramsPythonPython38python.exe" py38

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

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

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

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

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

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

退出虚拟环境

deactivate

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

Atas ialah kandungan terperinci Terlalu kuat! Python membangunkan alat desktop dan membenarkan kod melakukan kerja berulang untuk kami!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam