请为我编一组python代码能够实现以下功能:可自主建立多个分类相册并命名标签,在一个窗口中能够对所有的图片赋予标签并复制在对应分类相册,已被赋予标签的图片的从总相册中移除,在点击对应标签时能够看到已分类的归为此类的图片
时间: 2024-12-08 08:24:03 浏览: 16
当然,这是一个简单的Python脚本,我们将使用`os`, `shutil`, `tkinter`库来实现这个功能。首先确保已经安装了这些库,如果没有可以使用`pip install os shutil tkinter`命令安装。
```python
import os
import tkinter as tk
from tkinter import filedialog
# 定义相册目录和标签列表
albums_dir = 'Photos'
labels = ['Category1', 'Category2', 'Category3'] # 根据需要自定义标签名
# 创建相册目录结构
def create_albums():
if not os.path.exists(albums_dir):
os.makedirs(albums_dir)
for label in labels:
album_path = os.path.join(albums_dir, label)
if not os.path.exists(album_path):
os.makedirs(album_path)
# 选择图片并分配标签
def assign_label(event):
file_path = filedialog.askopenfilename()
if file_path:
label = combobox.get() # 获取当前选中的标签
album_path = os.path.join(albums_dir, label)
shutil.copy(file_path, album_path) # 复制到对应分类相册
remove_from_total(file_path) # 移除总相册中的图片
# 移除总相册中的图片
def remove_from_total(file_path):
os.remove(file_path)
# 显示已分类图片
def show_category(label):
category_path = os.path.join(albums_dir, label)
if os.path.exists(category_path):
images = [img for img in os.listdir(category_path)]
print(f"Category: {label}\nImages: {images}")
# 主窗口设置
root = tk.Tk()
root.title("Image Manager")
create_albums()
frame = tk.Frame(root)
frame.pack(pady=10)
label_frame = tk.LabelFrame(frame, text="Select Image")
label_frame.pack()
combobox = tk.StringVar() # 存储当前标签
for label in labels:
combobox.set(label) # 设置初始标签选项
combo = tk.OptionMenu(label_frame, combobox, *labels)
combo.bind("<ButtonRelease-1>", assign_label)
combo.pack()
# 点击标签显示分类
tag_button = tk.Button(frame, text="Show Images", command=lambda l=label: show_category(l))
tag_button.pack()
root.mainloop()
```
运行此脚本,会打开一个小窗口,你可以选择图片并为其分配标签。已分配标签的图片会被移动到对应的分类相册,并且不会显示在总相册中。点击“Show Images”按钮,会弹出相应分类的照片列表。
阅读全文