[Python] 纯文本查看 复制代码
import os
import tkinter as tk
from tkinter import ttk
from datetime import datetime
class PipConfigTool:
def __init__(self, root):
self.root = root
self.root.title("pip源配置工具")
# 获取APPDATA路径
self.appdata_path = os.getenv('APPDATA')
self.pip_folder = os.path.join(self.appdata_path, 'pip')
self.pip_ini_path = os.path.join(self.pip_folder, 'pip.ini')
# 创建UI组件
self.create_widgets()
# 检查并创建必要的文件夹和文件
if not os.path.exists(self.pip_folder):
os.makedirs(self.pip_folder)
self.log_message("pip文件夹创建成功")
if not os.path.exists(self.pip_ini_path):
open(self.pip_ini_path, 'w').close()
self.log_message("pip.ini创建成功")
# 加载pip.ini内容
self.load_config()
def load_config(self):
default_config="[global]\ntimeout = 6000\nindex-url = [url]https://mirrors.aliyun.com/pypi/simple/[/url]\ntrusted-host = mirrors.aliyun.com"
try:
with open(self.pip_ini_path, 'r') as file:
config_content = file.read().strip()
if len(config_content) == 0:
config_content = default_config
self.log_message("配置文件为空,已加载默认配置")
except Exception as e:
config_content = default_config
self.log_message("读取配置文件失败,已加载默认配置")
self.config_text.delete(1.0, tk.END)
self.config_text.insert(tk.END, config_content)
def save_config(self):
new_content = self.config_text.get(1.0, tk.END).strip()
with open(self.pip_ini_path, 'w') as file:
file.write(new_content)
self.log_message(f"配置文件保存成功")
def log_message(self, message):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M")
full_message = f"{timestamp} {message}"
self.log_text.configure(state='normal')
self.log_text.insert(tk.END, full_message + "\n")
self.log_text.see(tk.END) # 自动滚动到底部
self.log_text.configure(state='disabled')
def create_widgets(self):
frame = ttk.Frame(self.root, padding="10")
frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
# 配置文本框
self.config_text = tk.Text(frame, wrap=tk.NONE, height=15, width=60)
self.config_text.grid(row=0, column=0, padx=5, pady=5, sticky=(tk.W, tk.E, tk.N, tk.S))
scrollbar_y = ttk.Scrollbar(frame, orient=tk.VERTICAL, command=self.config_text.yview)
scrollbar_x = ttk.Scrollbar(frame, orient=tk.HORIZONTAL, command=self.config_text.xview)
self.config_text['yscrollcommand'] = scrollbar_y.set
self.config_text['xscrollcommand'] = scrollbar_x.set
scrollbar_y.grid(row=0, column=1, sticky=(tk.N, tk.S))
scrollbar_x.grid(row=1, column=0, sticky=(tk.W, tk.E))
# 配置字段说明区
description_text = """配置文件位置:%APPDATA%\\pip\\pip.ini\n\nglobal:全局配置\ntimeout:连接超时时间(秒)\nindex-url:镜像源\ntrusted-host:受信任的主机"""
description_box = tk.Text(frame, wrap=tk.WORD, height=6, width=60)
description_box.insert(tk.END, description_text)
description_box.configure(state='disabled')
description_box.grid(row=2, column=0, padx=5, pady=5, sticky=(tk.W, tk.E, tk.N, tk.S))
# 日志文本框
self.log_text = tk.Text(frame, wrap=tk.NONE, height=10, width=60, state='disabled')
self.log_text.grid(row=3, column=0, padx=5, pady=5, sticky=(tk.W, tk.E, tk.N, tk.S))
scrollbar_log_y = ttk.Scrollbar(frame, orient=tk.VERTICAL, command=self.log_text.yview)
scrollbar_log_x = ttk.Scrollbar(frame, orient=tk.HORIZONTAL, command=self.log_text.xview)
self.log_text['yscrollcommand'] = scrollbar_log_y.set
self.log_text['xscrollcommand'] = scrollbar_log_x.set
scrollbar_log_y.grid(row=3, column=1, sticky=(tk.N, tk.S))
scrollbar_log_x.grid(row=4, column=0, sticky=(tk.W, tk.E))
# 保存按钮
save_button = ttk.Button(frame, text="保存", command=self.save_config)
save_button.grid(row=5, column=0, pady=10)
for child in frame.winfo_children():
child.grid_configure(padx=5, pady=5)
if __name__ == "__main__":
root = tk.Tk()
app = PipConfigTool(root)
root.mainloop()