У меня есть небольшой скрипт на python3, где я хочу ввести путь в записи Tkinter и, нажав кнопку Tkinter, показать содержимое пути, используя метод os.walk (),в списке. У меня есть проблема с тем, как я покажу печать «прогулки» в списке. Вот код, который у меня есть:
import os
from tkinter import *
import re
class TKWindow:
def __init__(self, window):
self.window = window
self.window.wm_title("List of folders , subfolders and files.")
line1 = Label(new_window, text='Enter path to explore:')
line1.grid(row=0, column=1)
self.title = StringVar()
self.entry1 = Entry(new_window, textvariable=self.title, width=30)
self.entry1.grid(row=0, column=2)
button1 = Button(new_window, text='Show Contents', width=15, command=lambda: self.populate_list_box())
button1.grid(row=0, column=3)
self.content_list = Listbox(new_window, height=25, width=69)
self.content_list.grid(row=2, column=1, rowspan=5, columnspan=5)
scrollbar1 = Scrollbar(new_window)
scrollbar1.grid(row=2, column=6, rowspan=6)
self.content_list.configure(yscrollcommand=scrollbar1.set)
scrollbar1.configure(command=self.content_list.yview())
self.content_list.bind(self.show_contents_of_folder)
def show_contents_of_folder(self):
path = self.retrieve_input()
list_of_contents = []
for foldername, subfolders, filenames in os.walk(path):
list_of_contents.append('Current Folder:' + foldername)
for subfolder in subfolders:
list_of_contents.append('Subfolder of:' + foldername + ':' + subfolder)
for filename in filenames:
list_of_contents.append('Files inside:' + foldername + ':' + filename)
return list_of_contents
def retrieve_input(self):
input_value = self.entry1.get()
path_re = re.compile(r'.\\')
path_re.sub('\\\\', input_value)
return input_value
def populate_list_box(self):
lst = self.show_contents_of_folder()
for i in lst:
self.content_list.insert(i, END)
Это ошибка, которую я получаю:
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\Downloads\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__return self.func(*args)
File "D:/Downloads/Python Projects/Organising_Files/Walking_a_directory_with_OS_module.py", line 18, in <lambda>
button1 = Button(new_window, text='Show Contents', width=15, command=lambda: self.populate_list_box())
File "D:/Downloads/Python Projects/Organising_Files/Walking_a_directory_with_OS_module.py", line 54, in populate_list_box self.content_list.insert(i, END)
File "D:\Downloads\Python\Python37\lib\tkinter\__init__.py", line 2806, in insert
self.tk.call((self._w, 'insert', index) + elements)
_tkinter.TclError: bad listbox index "Current Folder:D:\Downloads\Word PDF files\Programming": must be active, anchor, end, @x,y, or a number
Извините, если это общий вопрос, но я не смог найти ответ, которыйменя устраивает, я новичок в питоне и сейчас учусь. Спасибо за ваше время.