Python库安装器的图形用户界面(GUI)应用程序,借助 tkinter 库构建界面,通过 subprocess 库调用 pip 命令来安装Python库。以下是对代码各部分功能的详细介绍:
1. 导入必要的库
import subprocess
import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
import threading
import time
subprocess:用于在Python脚本里调用外部命令,这里主要用于调用pip install命令来安装Python库。tkinter:Python的标准GUI库,用于创建图形用户界面。messagebox:tkinter的一个组件,用于显示消息框,像安装成功或失败的提示信息。ttk:tkinter的主题化组件库,提供了更美观的界面组件,这里用来创建进度条。threading:用于实现多线程编程,让安装操作在独立的线程中执行,防止界面冻结。time:虽然代码中未实际使用,但可能是预留用于后续添加时间相关功能的。
2. 定义库及其描述
libraries_info = {
"python-docx": "用于创建和修改 Microsoft Word .docx 文件的库。",
"Pillow": "Python 中常用的图像处理库,可用于图像的打开、编辑、保存等操作。",
# 其他库信息...
}
这是一个字典,键为Python库的名称,值是该库的简要描述。这些信息会在界面中显示,方便用户了解每个库的用途。
3. 安装单个库的函数
def install_single_library(library):
def install():
# 创建一个模态窗口显示进度条
progress_window = tk.Toplevel(root)
progress_window.title(f"正在安装 {library}")
progress_window.geometry("300x100")
progress_window.grab_set()
progress_label = tk.Label(progress_window, text=f"正在安装 {library}...")
progress_label.pack(pady=10)
progress_bar = ttk.Progressbar(progress_window, orient="horizontal", length=200, mode="indeterminate")
progress_bar.pack(pady=10)
progress_bar.start()
def install_in_thread():
try:
# 不显示控制台窗口
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
subprocess.run(["pip", "install", library], check=True, startupinfo=startupinfo)
messagebox.showinfo("安装成功", f"成功安装 {library}")
except subprocess.CalledProcessError as e:
messagebox.showerror("安装失败", f"安装 {library} 时出错: {e}")
finally:
progress_window.destroy()
# 在新线程中运行安装过程
install_thread = threading.Thread(target=install_in_thread)
install_thread.start()
return install
install_single_library是一个闭包函数,它接收一个库名作为参数,返回一个install函数。install函数创建一个模态窗口,显示安装进度条,并启动一个新线程来执行实际的安装操作。install_in_thread函数在新线程中运行,调用subprocess.run执行pip install命令来安装指定的库。若安装成功,显示成功提示消息;若安装失败,显示错误提示消息。最后关闭进度窗口。
4. 安装所有库的函数
def install_all_libraries():
libraries = list(libraries_info.keys())
total_libraries = len(libraries)
progress_bar['maximum'] = total_libraries
progress_bar['value'] = 0
def install_in_thread():
for index, library in enumerate(libraries):
try:
# 不显示控制台窗口
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
subprocess.run(["pip", "install", library], check=True, startupinfo=startupinfo)
messagebox.showinfo("安装成功", f"成功安装 {library}")
except subprocess.CalledProcessError as e:
messagebox.showerror("安装失败", f"安装 {library} 时出错: {e}")
progress_bar['value'] = index + 1
root.update_idletasks()
# 在新线程中运行安装过程
install_thread = threading.Thread(target=install_in_thread)
install_thread.start()
install_all_libraries函数获取所有库的名称,设置进度条的最大值为库的总数,并将进度条的值初始化为0。install_in_thread函数在新线程中运行,遍历所有库,依次调用pip install命令进行安装。每安装一个库,更新进度条的值,并刷新界面。
5. 创建主窗口和界面布局
# 创建主窗口
root = tk.Tk()
root.title("库安装器 Ver1.2--科技之星制作 25.04.21")
root.geometry("400x683") # 减小窗口宽度
root.configure(bg="#f0f0f0") # 设置窗口背景颜色
# 固定窗口大小,禁止最大化和拖动边缘改变大小
root.resizable(False, False)
# 创建一个框架来容纳所有内容
main_frame = tk.Frame(root, bg="#f0f0f0")
main_frame.pack(anchor=tk.CENTER, expand=True, pady=10, padx=10) # 减小内边距
# 创建标题、描述和按钮的框架
title_frame = tk.Frame(main_frame, bg="#f0f0f0")
title_frame.pack(side=tk.LEFT, padx=5, fill=tk.Y) # 减小内边距
description_frame = tk.Frame(main_frame, bg="#f0f0f0")
description_frame.pack(side=tk.LEFT, padx=5, fill=tk.Y) # 减小内边距
button_frame = tk.Frame(main_frame, bg="#f0f0f0")
button_frame.pack(side=tk.LEFT, padx=5, fill=tk.Y) # 减小内边距
# 显示标题、描述和下载按钮
libraries = list(libraries_info.keys())
for library in libraries:
library_label = tk.Label(title_frame, text=library, font=("Arial", 12), bg="#f0f0f0")
library_label.pack(anchor=tk.W, pady=3) # 减小垂直内边距
description_label = tk.Label(description_frame, text=libraries_info[library], font=("Arial", 10), bg="#f0f0f0",
wraplength=200, justify=tk.LEFT)
description_label.pack(anchor=tk.W, pady=3) # 减小垂直内边距
download_single_button = tk.Button(button_frame, text="下载",
command=install_single_library(library),
font=("Arial", 10), bg="#4CAF50", fg="white")
download_single_button.pack(anchor=tk.W, pady=3) # 减小垂直内边距
# 创建一个新的框架来放置全部下载按钮和进度条
bottom_frame = tk.Frame(root, bg="#f0f0f0")
bottom_frame.pack(side=tk.BOTTOM, fill=tk.X, pady=10)
# 创建全部下载按钮
download_all_button = tk.Button(bottom_frame, text="全部下载", command=install_all_libraries,
font=("Arial", 14), bg="#4CAF50", fg="white", padx=20, pady=10)
download_all_button.pack(anchor=tk.CENTER, pady=10)
# 创建进度条
progress_bar = ttk.Progressbar(bottom_frame, orient="horizontal", length=300, mode="determinate")
progress_bar.pack(anchor=tk.CENTER)
- 创建主窗口,设置窗口标题、大小和背景颜色,并禁止窗口最大化和拖动边缘改变大小。
- 创建多个框架来组织界面元素,包括标题、描述和下载按钮。
- 遍历
libraries_info字典,为每个库创建一个标签显示库名,一个标签显示库的描述,以及一个按钮用于安装该库。 - 创建一个“全部下载”按钮,点击该按钮会调用
install_all_libraries函数安装所有库。 - 创建一个进度条,用于显示安装所有库的进度。
6. 运行主循环
root.mainloop()
启动 tkinter 的主事件循环,使窗口保持显示并响应用户的操作。
总结
这个应用程序的主要功能是提供一个图形化界面,让用户可以方便地安装多个Python库。用户既可以选择单独安装某个库,也可以一键安装所有库。在安装过程中,会显示进度条,并且会给出安装成功或失败的提示信息。
未经允许不得转载作者:
System,
转载或复制请以
超链接形式
并注明出处
科技之星网站 。
原文地址:
《
【Python 原创】库安装器 Ver1.2_适合小白初学者使用》
发布于
2025-4-21
(禁止商用或其它牟利行为)版权归原作者本人所有,您必须在下载后24小时内删除, 感谢您的理解与合作








值得学习收藏
非常感谢您的支持和肯定,很高兴这个库安装器能对您有所帮助!我们将继续致力于简化Python库的安装过程,让更多的初学者能够轻松上手Python编程。如果您在使用过程中有任何疑问或者建议,欢迎随时提出,我们会及时进行改进。再次感谢您的鼓励,期待您的持续关注!
谢谢
非常感谢您的感谢!很高兴您觉得这篇文章对您有所帮助。如果在使用库安装工具或Python学习过程中有任何问题,欢迎随时提问,我会尽力为您提供专业的帮助。期待看到您的进步!祝编程愉快!
谢谢可以下载不

您好! 非常感谢您对Python库安装器Ver1.2版本的兴趣。这个工具确实可以帮助您更轻松地安装Python库,特别适合初学者使用。但请注意,我们不能提供非法下载资源或违反版权的行为。建议您还是通过官方网站或认证平台获取所需资源。我们致力于合法合规地分享知识,希望您能理解。 祝编程愉快!