|
发表于 2021-8-28 16:41:47
|
显示全部楼层
本楼为最佳答案
本帖最后由 qq1151985918 于 2021-8-28 21:38 编辑
刚闲下来重新敲了一个,感觉比我以前自己写的那个简单了点,凑合吧
- from tkinter import filedialog
- from tkinter import *
- from os import listdir
- from PIL import Image, ImageTk
- files = {}
- img_open = None
- img = None
- help_text = """
- 1.打开文件下拉菜单
- 2.选择打开文件方式
- 3.双击列表显示图片
- """
- def open_file():
- file_path = filedialog.askopenfilename()
- file_list.delete(0, "end")
- files.clear()
- name = file_path.split("/")[-1]
- files[name] = file_path
- file_list.insert("end", name)
- def open_dir():
- dir_path = filedialog.askdirectory()
- file_list.delete(0, "end")
- files.clear()
- target_file_name = ["jpg", "png", "gif"]
- for name in listdir(dir_path):
- if name.split(".")[-1].lower() in target_file_name:
- files[name] = dir_path + "/" + name
- file_list.insert("end", name)
- def show_view(event):
- global img_open
- global img
- get_file = file_list.get(ACTIVE)
- file_path = files[get_file]
- img_open = Image.open(file_path)
- img_open.thumbnail((265, 390), Image.ANTIALIAS)
- img = ImageTk.PhotoImage(img_open)
- canvas.create_image(133, 195, anchor=CENTER, image=img)
-
- root = Tk()
- root.geometry("500x400")
- root.resizable(0, 0)
- root.title("标题")
- menubar = Menu(root, tearoff=0)
- file_menu = Menu(menubar, tearoff=0)
- file_menu.add_command(label="打开", command=open_file)
- file_menu.add_command(label="打开文件夹", command=open_dir)
- file_menu.add_separator()
- file_menu.add_command(label="退出", command=exit)
-
- train_menu = Menu(menubar, tearoff=0)
- test_menu = Menu(menubar, tearoff=0)
- detect_menu = Menu(menubar, tearoff=0)
- menubar.add_cascade(label="文件", menu=file_menu)
- menubar.add_cascade(label="训练", menu=train_menu)
- menubar.add_cascade(label="测试", menu=test_menu)
- menubar.add_cascade(label="检测", menu=detect_menu)
- root.config(menu=menubar)
- sb = Scrollbar(root)
- sb.place(x=205, y=5, width=15, height=390)
- file_list = Listbox(root, yscrollcommand=sb.set)
- file_list.place(x=5, y=5, width=200, height=390)
- file_list.bind("<Double-Button-1>", show_view)
- sb.config(command=file_list.yview)
- canvas = Canvas(root, bg="white", width=265, height=390)
- canvas.place(x=225, y=5)
- canvas.create_text(133, 195, anchor=CENTER, text=help_text)
- root.mainloop()
复制代码 |
|