【问题标题】:Tkinter Frame container color not visibleTkinter Frame 容器颜色不可见
【发布时间】:2012-05-27 05:31:46
【问题描述】:

为什么我看不到带有以下代码的红框?

import Tkinter

root = Tkinter.Tk()
root.geometry("220x300")

container_frame = Tkinter.Frame(background = "red", width = 100, height = 120)
container_frame.pack()

widget_button = Tkinter.Button(master = container_frame)
widget_button.pack()

root.mainloop()

【问题讨论】:

  • 顶一下,你需要将container_frame的master设置为root...
  • 奇怪的是这并没有改变任何东西。

标签: python tkinter


【解决方案1】:

您看不到它,因为您在按钮和框架之间没有填充。默认情况下,容器“缩小以适应”其内容。即使您向框架添加明确的宽度或高度,它也会缩小以完全适合其子级。

有几种方法可以实现您正在寻找的效果,但尚不清楚您到底想要什么效果。您可以关闭此“缩小以适应”行为(使用container_frame.pack_propagate(False))。或者,您可以在小部件周围添加填充。或者,您可以将背景应用于框架的容器。或者您可以打包框架以填充其容器(主窗口),然后确保包含窗口足够大以暴露框架。

作为最后一个建议的示例,您可以将一行更改为:

container_frame.pack(side="top", fill="both", expand=True)

【讨论】:

  • 谢谢!您说“或者,您可以将背景应用于框架的容器。”。我试过 root = Tkinter.Tk(background = "red") 。那没有用,我该怎么做?我也做了frame_container.overriderderict()。这产生了一个 AttributeError。
  • @Bentley4:我不知道当我发布我的答案时我在想什么,我完全误导了你。你不想要overrideredirect,你想要pack_propagate。对困惑感到抱歉;我已经更新了我的答案。
【解决方案2】:

如果你改为:

widget_button.pack(padx=10, pady=10)

在调用widget_button.pack(...)的时候可以看到frame已经调整大小了

【讨论】:

  • 对不起,这只是为按钮提供填充,它没有回答问题。我知道 Frame 默认调整为调用 container_frame 作为其实例化参数的小部件的大小。但我通过了选项:width=100height=120 来覆盖此行为。所以我想得到container_frame 来获得这个尺寸并通过颜色来查看它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 2014-03-31
  • 2022-11-12
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多