主页 > 手机  > 

利用python开发自己的小工具

利用python开发自己的小工具
从最简单的开始:你的第一个GUI程序

首先,我们要用到tkinter库,它是Python自带的,不需要额外安装:

importtkinterastk # 创建主窗口 window=tk.Tk() window.title("我的第一个GUI程序") window.geometry("300x200") # 添加一个标签 label=tk.Label(window, text="你好,Python!", font=("微软雅黑", 16)) label.pack() # 添加一个按钮 defsay_hello():     print("大家好!") button=tk.Button(window, text="点我打招呼", command=say_hello) button.pack() # 运行程序 window.mainloop()

把这段代码保存为hello.py,运行它,瞬间就能看到一个简单的窗口程序!

进阶:打造实用小工具

来做点实际的东西!比如一个文件重命名工具:

importtkinterastk fromtkinterimportfiledialog importos classFileRenamer:     def__init__(self):         self.window=tk.Tk()         self.window.title("文件批量重命名工具")         self.window.geometry("400x300")                  # 选择文件夹按钮         self.select_btn=tk.Button(             self.window,              text="选择文件夹",              command=self.select_folder         )         self.select_btn.pack(pady=10)                  # 显示选中路径         self.path_label=tk.Label(             self.window,              text="未选择文件夹",             wraplength=350         )         self.path_label.pack(pady=5)                  # 前缀输入框         tk.Label(self.window, text="请输入文件名前缀:").pack(pady=5)         self.prefix=tk.Entry(self.window)         self.prefix.pack()                  # 开始重命名按钮         self.rename_btn=tk.Button(             self.window,             text="开始重命名",             command=self.rename_files         )         self.rename_btn.pack(pady=20)                  # 状态显示         self.status=tk.Label(self.window, text="")         self.status.pack(pady=10)          defselect_folder(self):         folder=filedialog.askdirectory()         iffolder:             self.folder_path=folder             self.path_label.config(text=f"已选择: {folder}")          defrename_files(self):         ifnothasattr(self, 'folder_path'):             self.status.config(text="请先选择文件夹!")             return                      prefix=self.prefix.get()         ifnotprefix:             self.status.config(text="请输入前缀!")             return                      try:             files=os.listdir(self.folder_path)             fori, fileinenumerate(files, 1):                 old_path=os.path.join(self.folder_path, file)                 new_name=f"{prefix}_{i}{os.path.splitext(file)[1]}"                 new_path=os.path.join(self.folder_path, new_name)                 os.rename(old_path, new_path)                          self.status.config(text=f"成功重命名{len(files)}个文件!")         exceptExceptionase:             self.status.config(text=f"出错了:{str(e)}") if__name__=="__main__":     app=FileRenamer()     app.window.mainloop()

这个小工具可以:

选择目标文件夹

输入文件名前缀

一键重命名所有文件

实用吧?而且代码结构清晰,注释详细,拿来就能用!

高级技巧:美化你的应用

光有功能还不够,咱们来给应用加点颜色!推荐使用customtkinter库,它能让你的程序看起来超级专业:

importcustomtkinterasctk classModernApp:     def__init__(self):         # 设置主题         ctk.set_appearance_mode("dark")         ctk.set_default_color_theme("blue")                  # 创建窗口         self.window=ctk.CTk()         self.window.title("现代化应用")         self.window.geometry("500x400")                  # 创建标签         self.label=ctk.CTkLabel(             self.window,             text="现代化的Python应用",             font=("微软雅黑", 20)         )         self.label.pack(pady=20)                  # 创建输入框         self.entry=ctk.CTkEntry(             self.window,             placeholder_text="请输入内容"         )         self.entry.pack(pady=10)                  # 创建按钮         self.button=ctk.CTkButton(             self.window,             text="点击我",             command=self.button_click         )         self.button.pack(pady=10)                  # 创建进度条         self.progress=ctk.CTkProgressBar(self.window)         self.progress.pack(pady=10)         self.progress.set(0.7)                  # 创建开关         self.switch=ctk.CTkSwitch(             self.window,             text="开启/关闭"         )         self.switch.pack(pady=10)          defbutton_click(self):         text=self.entry.get()         iftext:             self.label.configure(text=f"你输入了:{text}") if__name__=="__main__":     app=ModernApp()     app.window.mainloop() 打包发布:让所有人都能用上你的软件

写好程序后,最后一步是打包。我们用pyinstaller把程序打包成exe文件:

# 先安装pyinstaller pipinstallpyinstaller # 打包命令 pyinstaller--windowed--icon=app.ico--name="我的应用"main.py 实战项目:便签本应用

让我们把学到的知识组合起来,做一个实用的便签本:

importtkinterastk fromtkinterimportmessagebox importjson importos classNoteApp:     def__init__(self):         self.window=tk.Tk()         self.window.title("我的便签本")         self.window.geometry("500x400")                  # 加载笔记         self.notes=self.load_notes()                  # 创建界面         self.create_widgets()          defcreate_widgets(self):         # 笔记列表         self.note_listbox=tk.Listbox(self.window, width=50)         self.note_listbox.pack(pady=10)                  # 更新列表显示         self.update_note_list()                  # 输入框         self.note_entry=tk.Entry(self.window, width=50)         self.note_entry.pack(pady=5)                  # 按钮框架         btn_frame=tk.Frame(self.window)         btn_frame.pack(pady=5)                  # 添加按钮         tk.Button(             btn_frame,              text="添加笔记",             command=self.add_note         ).pack(side=tk.LEFT, padx=5)                  # 删除按钮         tk.Button(             btn_frame,             text="删除笔记",             command=self.delete_note         ).pack(side=tk.LEFT, padx=5)          defload_notes(self):         ifos.path.exists("notes.json"):             withopen("notes.json", "r", encoding="utf-8") asf:                 returnjson.load(f)         return []          defsave_notes(self):         withopen("notes.json", "w", encoding="utf-8") asf:             json.dump(self.notes, f, ensure_ascii=False)          defupdate_note_list(self):         self.note_listbox.delete(0, tk.END)         fornoteinself.notes:             self.note_listbox.insert(tk.END, note)          defadd_note(self):         note=self.note_entry.get().strip()         ifnote:             self.notes.append(note)             self.save_notes()             self.update_note_list()             self.note_entry.delete(0, tk.END)         else:             messagebox.showwarning("警告", "请输入内容!")          defdelete_note(self):         selection=self.note_listbox.curselection()         ifselection:             index=selection[0]             self.notes.pop(index)             self.save_notes()             self.update_note_list()         else:             messagebox.showwarning("警告", "请选择要删除的笔记!") if__name__=="__main__":     app=NoteApp()     app.window.mainloop()

这个便签本应用包含了我们学到的所有知识点:

GUI设计

文件操作

事件处理

数据持久化

进阶提升方向

学习更多GUI框架

PyQt5:功能强大,适合大型应用

Kivy:适合做跨平台应用

wxPython:原生界面,性能好

设计模式的运用

MVC架构

观察者模式

单例模式

性能优化技巧

使用多线程处理耗时操作

优化内存使用

提升响应速度

我们还可以将自己编写的程序,进行打包出来,提供给其他人进行使用

要将Python代码打包成可执行的`.exe`文件,可以使用`PyInstaller`工具。以下是详细步骤: 安装PyInstaller 首先,确保你已经安装了`PyInstaller`。如果没有安装,可以使用`pip`进行安装:

```bash pip install pyinstaller ```

打包Python脚本 假设你的Python脚本名为`script.py`,你可以使用以下命令将其打包成`.exe`文件:  

```bash pyinstaller --onefile script.py ``` - `--onefile` 参数会将所有依赖项打包成一个单独的`.exe`文件。 - 如果你不需要打包成一个文件,可以省略`--onefile`参数,这样会生成一个包含多个文件的目录。

查找生成的`.exe`文件 打包完成后,生成的`.exe`文件会位于`dist`目录下。你可以在命令行中进入该目录并运行`.exe`文件:  

```bash cd dist ./script.exe ```

其他常用选项

- `--noconsole`:如果你的脚本是GUI应用程序,可以使用这个选项来隐藏控制台窗口。 - `--icon=icon.ico`:指定一个图标文件作为生成的可执行文件的图标。 - `--name=myapp`:指定生成的可执行文件的名称。

例如:  

```bash pyinstaller --onefile --noconsole --icon=icon.ico --name=myapp script.py ```

处理依赖项 如果你的脚本依赖于其他文件(如图片、配置文件等),你可以使用`--add-data`选项将这些文件包含在打包过程中。例如:  

```bash pyinstaller --onefile --add-data "path/to/datafile;." script.py ```

在Windows上,路径分隔符使用`;`,在Linux/macOS上使用`:`。 清理临时文件 打包完成后,PyInstaller会生成一些临时文件和目录(如`build`目录)。你可以手动删除这些文件以节省空间。 注意事项 - 打包后的`.exe`文件可能会比较大,因为它包含了Python解释器和所有依赖项。 - 如果你在打包过程中遇到问题,可以查看生成的`build`目录中的日志文件以获取更多信息。 通过以上步骤,你就可以将Python代码打包成`.exe`文件并在没有Python环境的Windows系统上运行了。

标签:

利用python开发自己的小工具由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“利用python开发自己的小工具