【问题标题】:Button packed in a python 3.6 Frame按钮包装在 python 3.6 框架中
【发布时间】:2017-02-27 17:26:51
【问题描述】:

我实际上挠头真的很糟糕,我很讨厌一件简单的事情,我想在 tkinter 框架中打包一个按钮,但问题是我只有在我不打包按钮时才能看到框架,如果我把按钮打包在里面我只看到按钮...

from tkinter import *

root = Tk()
frame = Frame(root,bg ='yellow')
frame.pack()

bottomframe = Frame(root,bg = 'red')
bottomframe.pack( side = BOTTOM )

redbutton = Button(frame, text = "Red", fg = "red")
redbutton.pack( side = LEFT)

blackbutton = Button(bottomframe, text = "Black", fg = "black")
blackbutton.pack( side = BOTTOM)

root.mainloop()

这是正确显示我的两个按钮但不是框架,我知道是因为我看不到颜色,我一定是在做一些愚蠢和错误的事情,或者我不知道,无论如何,我们将不胜感激,谢谢并继续编码!

【问题讨论】:

  • 你为什么要创建一个框架?只需使用root.configure(bg='yellow')
  • 出于特定原因我想要一个框架,我将有几个框架不包含相同的东西,这就是为什么
  • 发生的情况是 blackbutton 正在替换到框架的位置。您能告诉我们您希望如何分配元素吗?
  • 好吧,我想拥有在我的程序的整个执行过程中永远不会改变的按钮,它们将在一个框架中,其他的将在另一个框架中,因为它们将由脚本生成并被刷新在一些桥上:)

标签: python tkinter python-3.6


【解决方案1】:

框架(实际上是所有小部件)旨在缩小或扩展以适应其内容。如果框架没有子框架,它将保持配置的大小,但如果添加子框架,它将缩小或增长以适应,除非它受到其父框架的约束。

假设您希望frame 占据大部分空间,并且bottomframe 是底部的一条按钮,您需要为pack 提供适当的参数来实现这一点。

例如:

frame.pack(fill="both", expand=True)
bottomframe.pack( side = BOTTOM, fill="x")

fill 用于控制小部件如何适应给它的空间。通过将值设置为“both”,它指示 tkinter 让框架在 x 和 y 方向上填充其父级。使用“x”值表示仅在“x”方向填充其空间。

expand 用于控制如何分配额外空间。当设置为True 时,它指示此小部件展开以填充其父级中的任何剩余空间。当设置为False 时,它不会占用任何额外空间。

在使用pack 时,您通常会拥有一个将expand 设置为True 的小部件,但如果您想将父级分成两半,通常会有两个小部件。

【讨论】:

  • 我有这种东西,但在单独的代码中,我有一个设置了宽度和高度的框架,这还不够吗? ://
  • @Prosity:设置宽度和高度是不够的。就像我在回答中所说的那样,框架会扩大或缩小以适应其内容。一般来说,您永远不需要为框架指定明确的宽度和高度。
  • 好的,我怎样才能让我的框架“锁定”或设置为特定大小?是否可以 ?或者也许有另一个小部件可以实现这一点?谢谢:)
  • 显然在 python 3.6 中扩展是未知的,我得到了一个错误:/
  • ok 没有正确使用它,但是可以锁定框架的大小吗? :)
猜你喜欢
  • 2017-01-20
  • 1970-01-01
  • 2018-05-05
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
相关资源
最近更新 更多