強すぎる! Python はデスクトップ ガジェットを開発し、コードに繰り返しの作業を行わせます。

WBOY
リリース: 2023-05-06 11:10:06
転載
2111 人が閲覧しました

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

この記事を書こうと思ったきっかけは、「Python を使ってデータ ソースに基づいてピボット テーブルを自動生成する方法」についての友人からの質問でした。この質問の背後にある非常に良いアイデアです。解決策のアイデアは、コードに繰り返しの作業を行わせることで、作業負荷を軽減し、エラーを減らすことです。

Python で開発されたガジェットは、実際に Python プログラムを exe にパッケージ化しており、共有して使用することができます。コンピューターに Python 環境がインストールされていない場合でも使用できます。コードを使用して改善します。作業効率を高め、残業を最小限に抑えます。

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

コンテンツの概要

  • 明確な要件: ピボット テーブルを自動的に生成 [この部分は繰り返しの作業で置き換えることができます】
  • サードパーティの依存ライブラリをインストールします: tkinter と pyinstaller
  • # コード実装: ピボット テーブルとデスクトップ GUI リンケージ設計を生成するための Python の 2 つの部分が含まれます

  • パッケージ Python プログラムは exe 実行可能ファイルを生成します

  • exe ファイルが大きすぎる可能性がある問題を解決します: 仮想環境をインストールします
1. 要件の背景


# は機能します 反復的な操作の場合は、サプライヤー名、月、倉庫数量の 3 つのフィールドを使用して、目的のピボット テーブル形式を生成します。


太强了!Python 开发桌面小工具,让代码替我们干重复的工作!2. サードパーティの依存ライブラリをインストールする


デスクトップ ウィンドウを作成します。ここでは GUI ライブラリである tkinter を使用します。 Python に付属しており、インストール後すぐに使用できます。

pip install tkinter
ログイン後にコピー

pyinsatller を使用してプログラムを exe にパッケージ化します。利点は、コードをサーバーにデプロイする必要がないことです。パッケージ化された exe を相手に直接送信でき、小さくて軽いのにとても機能的です。

pip install pyinstaller
ログイン後にコピー

3. コードの実装


ピボット テーブルとフィルター データを生成する 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 开发桌面小工具,让代码替我们干重复的工作!デザインデスクトップウィンドウ関数、ファイル名: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 开发桌面小工具,让代码替我们干重复的工作!実行結果が上記のようであれば、コードに問題がないことを意味します。次のステップに進むことができます。

4. Python プログラムをパッケージ化して exe を生成します


DOS ウィンドウを開き、2 つの py ファイルが配置されているディレクトリに切り替えます。パス。

pyinsatller -F -w opration.py
ログイン後にコピー

太强了!Python 开发桌面小工具,让代码替我们干重复的工作! pyinstaller コマンドの共通オプション パラメーター:


-i アプリケーションにアイコンを追加します
  • -F は、パッケージ化後に exe 形式のファイルが 1 つだけ生成されることを指定します。

  • -D –onedir は、exe ファイルを含むディレクトリを作成しますが、多くのファイルに依存します (デフォルト オプション)

  • -c –console, –nowindowed コンソールを使用、インターフェースなし (デフォルト)

  • -w –windowed、-noconsole ウィンドウを使用、コンソールなし
  • # -p 検索パスの追加

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

現在のディレクトリに、build と 2 つのフォルダーが生成されます。距離。 Dist にはすべての実行可能な exe ファイルが含まれています。ショートカットをデスクトップに送信し、opration.exe をクリックして実行します。そのショートカットをデスクトップに送信してダブルクリックできます。 太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

5. exe ファイルが大きすぎる問題を解決する

一部のパートナーは最近 Python 環境をインストールしたばかりなので、ファイルが大きすぎるという問題が発生する可能性があります。存在しない。たとえば、私のコンピューターには Python の依存関係パッケージと anaconda が多数インストールされています。パッケージ化されたファイルは実際には 660M です。パッケージ化に時間がかかり、実行中にスタックします。その後、修正後、31M に減少しました。パッケージ高速で数秒で実行できます。解決策は、Windows システムに Python 仮想環境をインストールすることです。次の操作は、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 开发桌面小工具,让代码替我们干重复的工作!

以上が強すぎる! Python はデスクトップ ガジェットを開発し、コードに繰り返しの作業を行わせます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート