0

我正在尝试显示已安装的文件系统目录以供浏览。我将目录存储在列表中,然后将它们分配给每个按钮。我遇到的问题是运行程序时只出现一个按钮。库是最终目录,它是唯一打印出来的目录。我首先认为它可能是窗口大小,因为它只能容纳一个按钮的足够大小,所以我更改了窗口的大小,问题仍然存在。

我认为问题可能出在用于创建按钮本身的代码中,即主控部分。每次运行时,以前的主按钮不会被新的主按钮替换吗?如果是这种情况,我将如何解决这个问题?

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

#!/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()
4

1 回答 1

2

您需要问自己一个问题“在我为 b 中的目录名做的那一点上,b 是什么?”。如果您无法通过遵循逻辑来弄清楚这一点(由于您无意识地做出假设,这有时会很困难),请在第二个“for”之前添加一个 print 语句。

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

于 2013-02-26T14:57:52.923 回答