0

マウントされたファイルシステムディレクトリを参照用に表示しようとしています。リスト内にディレクトリを保存し、それぞれのボタンに割り当てています。私が抱えている問題は、プログラムを実行したときにボタンが1つしか表示されないことです。ライブラリは最終的なディレクトリであり、印刷されるのはライブラリだけです。ボタン1つで十分なサイズしか収まらないので、最初はウィンドウサイズだと思ったので、ウィンドウのサイズを変えても問題はありませんでした。

問題は、ボタン自体、つまりマスターパーツを作成するために使用されるコードにあると思います。これを実行するたびに、前のマスターボタンが新しいものに置き換えられるだけではないでしょうか。この場合、どうすればこれを回避できますか?

また、ボタンを配置するためのコードが現在正しく機能しないことも知っています。いくつかのボタンを配置した後、新しい行から始めて繰り返したいのですが、今は3行目までしか下がらず、それ以上は下がらないでしょう。最小限のコーディングを使用せずに行を増やし続ける良い方法を考えることはできないようです。

#!/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'のdirnamesに対して'私が行う時点でbは何ですか?」という質問を自問する必要があります。ロジック(無意識のうちに仮定したために難しい場合があります)に従ってそれを理解できない場合は、2番目の「for」の直前にprintステートメントを追加します。

最初のforループでは、反復ごとにデータを上書きし、前に来たデータをすべて破棄します。そのループが完了するまでbに、最後のフォルダーのデータのみが含まれます。したがって、最終的にボタンを作成するためのループに到達すると、メインフォルダーの最後のフォルダーにあるdirnameのみが存在します。

于 2013-02-26T14:57:52.923 に答える