2013-02-26 99 views
0

我正在尝试显示用于浏览的已装载的文件系统目录。我将目录存储在列表中,然后将它们分配给每个按钮。我遇到的问题是运行程序时只出现一个按钮。库是最终的目录,它是唯一打印出来的目录。我首先想到它可能是窗口大小,因为它只适应了一个按钮的大小,所以我改变了窗口的大小,问题依然存在。python tkinter目录在网格视图中不能正确显示

我觉得问题可能在于用于创建按钮本身的代码,即主控部分。每次运行都不会将之前的主按钮替换为新的主按钮?如果情况如此,我将如何解决这个问题?

我也知道我的代码放置按钮现在不能正确工作。在放置了几个按钮之后,我想从一个新的行开始并重复,但现在它只会下到第三行,并且不会再继续。我似乎无法想象一个不使用最少编码就能增加行数的好方法。

#!/usr/bin/python 
# coding: latin-1 

import os 
from Tkinter import * 

a=[] 
b=[] 
row = 0 
column = 0 

for dirname, dirnames, filenames in os.walk('/mnt/Backups.backupdb/stuart dent\xe2\x80\x99s MacBook Pro'): 
    b = dirnames 
    a = filenames 

master = Tk() 
master.geometry("500x500") 
for dirnames in b: 
    Button(master, width=8, height=4, text=b).grid(row=row, column=column, padx=10, sticky=W) 
    column = column + 2 
    if column == 10: 
     row = 3 
     column = 0 
    break 

mainloop() 
+0

我并不真正了解tkinter,但是在获得列索引10后设置了row = 3。所有按钮的其余部分都将放置在第3行所以..此外,您还有宽度为8的按钮和身高4,而你只有10次和3次。也许他们重叠? – James 2013-02-26 14:48:42

+0

听起来好像我还有其他问题。谢谢你,我会处理那 – bigl 2013-02-26 15:02:11

回答

2

你需要问自己一个问题:“什么是b。在我‘您在B dirnames中’做了点?”。如果你不能通过遵循逻辑(由于你无意识地做出的假设而有时很难),在第二个“for”之前立即添加一个打印语句。

在第一个for循环中,您将覆盖每次迭代中的数据,丢弃之前发送的任何数据。到循环完成时,b只包含最后一个文件夹的数据。因此,当你最终到达循环来创建按钮时,你只有主文件夹中最后一个文件夹中的任何dirname。

+0

是的,我看到我现在出错了,谢谢。做出假设对我来说是个大问题 – bigl 2013-02-26 15:02:46