Я пытаюсь отобразить только базовое имя файла в списке Python, но каким-то образом сохранить полный путь к файлу. Я знаю, как отображать только базовое имя файла, но проблема в том, что список можно сортировать, и когда я пытаюсь выполнить следующий шаг программы (распечатка файлов в формате PDF), она не может найти файлы в списке, потому что они не имеют полного пути к файлу. Если я покажу полный путь к файлу в списке, это сработает, но я бы предпочел видеть только имя файла.
Код приведен ниже. Я удалил большую часть функций, чтобы просто сосредоточиться на том, о чем спрашиваю.
Приведенный ниже код откроет окно tk. Нажмите кнопку «Индивидуальная сортировка». Выберите любые файлы изображений. В новом окне нажмите «Сохранить список». Цель состоит в том, чтобы напечатать исходный путь к файлу изображения, но в настоящее время он печатает путь, в котором находится программа. Если вы закомментируете/раскомментируете помеченные строки, это будет работать, но в списке будет отображаться полный путь к файлу.
import tkinter as tk
from tkinter import *
from tkinter import filedialog
import os
ws = Tk()
ws.title('Select Files to Import')
ws.geometry('500x200')
ws.config(bg='#456')
f = ('sans-serif', 13)
btn_font = ('sans-serif', 10)
bgcolor = '#BF5517'
def sort():
global second
second = Toplevel()
second.geometry('800x400')
menubar=Menu(second)
menubar.add_command(label="Save List", command=save)
second.config(menu=menubar)
global listbox
listbox = Drag_and_Drop_Listbox(second)
listbox.pack(fill=tk.BOTH, expand=True)
directory = filedialog.askopenfilenames()
n = 0
for file in directory:
listbox.insert(n, os.path.basename(file)) ####comment
#listbox.insert(n, file) ####uncomment
n=n+1
def save():
image=listbox.get(0, listbox.size())
for x in image:
print(os.path.abspath(x))
class Drag_and_Drop_Listbox(tk.Listbox):
def __init__(self, master, **kw):
kw['selectmode'] = tk.SINGLE
tk.Listbox.__init__(self, master, kw)
self.bind('', self.getState, add='+')
self.bind('', self.setCurrent, add='+')
self.bind('', self.shiftSelection)
def setCurrent(self, event):
self.curIndex = self.nearest(event.y)
def getState(self, event):
i = self.nearest(event.y)
self.curState = self.selection_includes(i)
def shiftSelection(self, event):
i = self.nearest(event.y)
if self.curState == 1:
self.selection_set(self.curIndex)
else:
self.selection_clear(self.curIndex)
if i < self.curIndex:
x = self.get(i)
selected = self.selection_includes(i)
self.delete(i)
self.insert(i+1, x)
if selected:
self.selection_set(i+1)
self.curIndex = i
x = self.get(i)
selected = self.selection_includes(i)
self.delete(i)
self.insert(i-1, x)
if selected:
self.selection_set(i-1)
self.curIndex = i
frame = Frame(ws, padx=20, pady=20, bg=bgcolor)
frame.pack(expand=True, fill=BOTH)
btn_frame = Frame(frame, bg=bgcolor)
btn_frame.grid(columnspan=2, pady=(50, 0))
sort_btn = Button(
btn_frame,
text='Individual Sort',
command=sort,
font=btn_font,
padx=10,
pady=5
)
sort_btn.pack(side=LEFT, expand=True, padx=(5,5))
ws.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/791 ... ble-python
Как сохранить полный путь к файлу, но отображать только базовое имя в сортируемом списке Python? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение