2013-07-24 3 views
1

Я попытался изменить панель прокрутки из Tkdoc (http://www.tkdocs.com/tutorial/morewidgets.html#scrollbar), чтобы показать список файлов из папки, но это не сработает. Может кто-нибудь объяснить мне, почему? и как это исправить.Показать файлы в tkinter Scrollbar

Большое спасибо.

from tkinter import * 
from tkinter import ttk 
import os 

def fileName(): 
    path="C:\\temp" 
    dir=os.listdir(path) 
    for fn in dir: 
     print(fn) 


root = Tk() 
l = Listbox(root, height=5) 
l.grid(column=0, row=0, sticky=(N,W,E,S)) 
s = ttk.Scrollbar(root, orient=VERTICAL, command=l.yview) 
s.grid(column=1, row=0, sticky=(N,S)) 
l['yscrollcommand'] = s.set 
ttk.Sizegrip().grid(column=1, row=1, sticky=(S,E)) 
root.grid_columnconfigure(0, weight=1) 
root.grid_rowconfigure(0, weight=1) 
l.insert(fileName) 
root.mainloop() 

ответ

1

Вы должны указать, куда вставлять

l.insert(END, filename)

В коде, вы вставляете функцию имя файла. Вставьте возвращаемое значение функции имени файла.

Я переименовал fileName в get_filename и изменил его, чтобы вернуть список имен файлов.

from tkinter import * 
from tkinter import ttk 
import os 

def get_filenames(): 
    path = r"C:\temp" 
    return os.listdir(path) 


root = Tk() 
l = Listbox(root, height=5) 
l.grid(column=0, row=0, sticky=(N,W,E,S)) 
s = ttk.Scrollbar(root, orient=VERTICAL, command=l.yview) 
s.grid(column=1, row=0, sticky=(N,S)) 
l['yscrollcommand'] = s.set 
ttk.Sizegrip().grid(column=1, row=1, sticky=(S,E)) 
root.grid_columnconfigure(0, weight=1) 
root.grid_rowconfigure(0, weight=1) 
for filename in get_filenames(): 
    l.insert(END, filename) 
root.mainloop() 
Смежные вопросы