【问题标题】:Cannot see frame in tkinter python [duplicate]在 tkinter python 中看不到框架 [重复]
【发布时间】:2021-01-24 15:48:27
【问题描述】:

嘿,我正在尝试使用 tkinter 制作 gui,以下是我使用的代码。问题是没有错误,程序执行,我会看到根目录,但没有框架。在添加之前按钮我能够看到框架,但添加按钮后框架消失,我只能看到按钮请帮助

    from tkinter import*
    from tkinter import ttk
    root=Tk()
    root.title("STUDY")
    style=ttk.Style() 
    style.configure("custom.TFrame",background="black")
    frame=ttk.Frame(root,style="custom.TFrame")
    frame.pack()
    frame.config(height=100,width=100)
    ttk.Button(frame,text="CLICK ME").pack()
    root.mainloop()

【问题讨论】:

  • root.title("STUDY")之后添加root.geometry("100x100")

标签: python user-interface button tkinter frame


【解决方案1】:

tkinter 的几何管理就是这个 Quote 的特点 这里:

默认情况下,顶级窗口会自然地出现在屏幕上 大小,这是由其小部件内部确定的大小,并且 几何管理器。

您的框架的行为方式相同。如果框架不包含任何内容,则其宽度和高度为 0,这就是您看不到它的原因。

一种方法是使用pack_propagategrid_propagate,这取决于您打算在此框架中使用什么。

另一种不寻常的方法是在该框架中创建第二个框架并为其指定宽度和高度,外框将检查内框的宽度和高度并坚持下去。 See

还有其他方法,例如几何管理器pack 选项fillexpand

For more

【讨论】:

  • 我添加了 root.geometry("100x100") 但问题仍然存在。
  • 问题是当我添加一个按钮之前我可以看到但添加按钮后我看不到它
  • frame.pack()下方添加frame.pack_propagata(0),看看会发生什么
  • 现在它可以工作了,谢谢你的帮助。你能解释一下为什么会在 Windows 中发生这种情况,因为我正在学习 python 课程,我遵循的代码与我的导师使用的完全相同,但他没有遇到任何问题他在mac中使用它。这只是windows的问题吗。再次感谢
  • 请仔细阅读我的回答。正如我已经说过的,tkinter 计算每个 master自然大小,这可以是框架或窗口或顶层,这无关紧要。另请查看我发布的链接,对于初学者来说可以找到很多。至少meta.stackexchange.com/a/5235/828183
猜你喜欢
  • 2020-12-24
  • 2020-07-02
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多