2013-02-26 2 views
0

탐색을 위해 마운트 된 파일 시스템 디렉토리를 표시하려고합니다. 목록의 내부에 디렉토리를 저장하고 각각 버튼에 할당하고 있습니다. 내가 가지고있는 문제는 프로그램을 실행할 때 단 하나의 버튼이 나타납니다. 라이브러리는 최종 디렉토리이며 인쇄하는 유일한 디렉토리입니다. 처음에는 창 크기가 될 수 있다고 생각 했으므로 한 개의 버튼에 충분한 크기 만 수용 할 수 있었으므로 창 크기가 변경되어 문제가 남아있었습니다.파이썬 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

+0

소리가 나는 것처럼 또 다른 문제가 있습니다. 내가 그걸 다룰 것이니 고마워. – bigl

답변

2

"b '의 dirnames에 대해"내가하는 요점은 무엇입니까? "라는 질문을 스스로해야합니다." 당신이 무의식적으로 만드는 가정으로 인해 때로는 어려울 수있는 논리를 따르면서 그것을 파악할 수 없다면 두 번째 "for"앞에 print 문을 추가하십시오.

첫 번째 for 루프에서 이전에 온 데이터를 버리고 각 반복마다 데이터를 덮어 씁니다. 루프가 완료 될 때까지 b에는 마지막 폴더의 데이터 만 포함됩니다. 따라서 버튼을 만들 때 마침내 루프가 생기면 메인 폴더의 마지막 폴더에있는 dirnames 만 있습니다.

+0

예. 내가 지금 잘못 본 곳을 보니, 고마워. 나를위한 가정을 만드는 것이 큰 문제입니다. – bigl

관련 문제