python tkinter目录在网格视图中无法正确显示

时间:2013-02-26 13:39:45

标签: python button gridview directory 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()

1 个答案:

答案 0 :(得分:2)

你需要问自己一个问题是“我在做什么时候对于b'中的dirnames来说是什么?”。如果你不能通过遵循逻辑来解决这个问题(由于你无意识地做出假设,这有时很难),在第二个“for”之前立即添加一个print语句。

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