【问题标题】:Python / Tkinter grid sticky not filling vertical spacePython / Tkinter网格粘不填充垂直空间
【发布时间】:2014-12-19 12:45:06
【问题描述】:

我正在尝试创建一个按钮网格。这些按钮中的文本会改变,所以我希望按钮变大 - 填充每个网格元素的边框。下面的代码是说明问题的简化版本。按钮大多填充水平空间,但不填充垂直空间(除非添加多行文本作为按钮标签)。

from Tkinter import *
root = Tk()
buttons = {}
for y in range(3):
    root.rowconfigure(y, minsize=60)
for x in range(3):
    root.columnconfigure(x, minsize=60)
    for y in range(3):
        n = 3 * x + y
        buttons[n] = Button(root).grid(column=x, row=y, sticky=W + E + N + S)
root.mainloop()

这对我来说是这样的:

【问题讨论】:

  • 奇怪,works on my machine。也许这是 Mac 特有的行为?
  • 我可以复制(在 Mac 上)。
  • 顺便说一句,这可能不是您的问题的根源,但您的 buttons 字典将只包含 None 值,因为您添加的是 grid 的结果而不是按钮自己。
  • @Kevin: 一定是,因为当我在带有 OS X 的 stock 2.7 发行版上运行此代码时,我得到与 OP 相同的结果。
  • 你知道你可以使用像buttons[(x,y)]这样的元组,而不是使用数学来计算字典键。这样做可能会使您的代码更容易理解。

标签: python tkinter


【解决方案1】:

OSX 上的按钮确实希望看起来像 OSX 按钮,并且不会以您想要的方式扩展。这是使用本机小部件的缺陷之一。

【讨论】:

  • 谢谢!希望我在花所有时间试图弄清楚我做错了什么之前就知道这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2013-03-12
相关资源
最近更新 更多