【问题标题】:How to use TkInter fill or expand functions with self?如何使用 TkInter 填充或扩展 self 功能?
【发布时间】:2013-04-26 02:36:12
【问题描述】:

我有一个非常简单的 Python TkInter 程序。

如何在以下代码中使用“填充”或“扩展”选项?

from Tkinter import *

class Application(Frame):
    def sayhello(self):
        print "Hello!"

    def createWidgets(self):
        self.var = Button(self, text="Hello", command = self.sayhello)
        self.var.pack(side=LEFT)

        self.QUIT = Button(self, text="QUIT", fg="red", command = self.quit)
        self.QUIT.pack(side=LEFT)

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()

注意:我必须使用 self.var.pack() 格式,这样它才能在按下时执行“命令”……除非有人有更好的方法?

【问题讨论】:

  • 你想达到什么效果?你想让按钮填满整个窗口吗?哪个按钮?框架呢,它应该填满窗户吗?另外,“使用 self.var.pack() 格式”是什么意思?这不是一种格式,这只是你使用它的方式,它与你的代码使用它的方式使用命令选项没有任何关系。
  • 如何让 Hello 按钮填满窗口的 Y 轴?

标签: python python-2.7 python-3.x tkinter tk


【解决方案1】:

要让一个对象在 y 轴上填充它的容器,你可以使用参数fill="y"(或者fill=Y,如果你从 Tkinter 导入 Y)。

请注意,这仅控制小部件如何填充其容器。在您的代码中,这会使按钮填充内部框架,但由于您的内部框架没有填充 y 轴上的主窗口,您可能无法获得预期的视觉效果。

另外,特别是对于 Macintosh 上的按钮,按钮不会增长以填满空间。在 OSX 上,按钮是无法增加高度的原生小部件。

【讨论】:

  • 在尝试布局时,为每个小部件提供自己的(最好是花哨的)背景颜色会很有帮助。像这样,您可以快速查看空间实际在哪里......
  • 我意识到这是一篇相当老的帖子,但是布莱恩,我已经尝试了几个小时来弄清楚为什么我的按钮不会在我的 Mac 上垂直填充,在这里我找到了答案!我已经在这里发布了我的问题(stackoverflow.com/questions/29935918/…),但没有人能够回答它。我想问你,有没有一种快速而肮脏的方法来解决这个问题并允许按钮在 OS X 上垂直填充?还是我坚持他们的高度是固定的?
  • @wgrenard:mac 上的按钮将是固定高度并且不会展开。
猜你喜欢
  • 2018-09-27
  • 2020-02-05
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多