【问题标题】:python tkinter directories not displaying correctly in grid viewpython tkinter 目录在网格视图中未正确显示
【发布时间】:2013-02-11 23:45:45
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我不太了解 tkinter,但您在到达列索引 10 后设置 row=3。所有其余的按钮都将放在第 3 行,所以......另外,你有宽度为 8 和高度为 4 的按钮,而你只需要 10 跨和 3 向下。也许它们重叠?
  • 听起来好像我有另一个问题。谢谢,我会处理的

标签: python button gridview directory tkinter


【解决方案1】:

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

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

【讨论】:

  • 是的,我知道我现在哪里出错了,谢谢。做出假设对我来说是个大问题
猜你喜欢
  • 2021-01-18
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2014-04-14
相关资源
最近更新 更多