2013-02-26 61 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