2013-07-24 95 views
1

我試圖修改Tkdoc中的滾動條(http://www.tkdocs.com/tutorial/morewidgets.html#scrollbar)以顯示文件夾的文件列表,但它不起作用。有人可以解釋我爲什麼嗎?以及如何解決它。顯示tkinter滾動條中的文件

非常感謝。

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()