【问题标题】:How to place the button in a given frame in tkinter?如何将按钮放置在tkinter的给定框架中?
【发布时间】:2021-01-05 09:21:28
【问题描述】:

在这里,我需要将按钮放在 homeFrame 中。但我不能把按钮放在那里。有什么问题?请解决。这是代码。

from tkinter import *


root = Tk()
root.state('zoomed')
root.configure(bg='#498240')

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

headFrame = Frame(root,width=screen_width,height=120,bd=10,bg='#498240',relief=RIDGE).grid(row=0,column=0)
headlable = Label(headFrame,text='Super Market',fg='white',bg='#498240',font=('times new roman',55,'bold')).grid(row=0,column=0)

homeFrame = Frame(root,width=screen_width,height=screen_height-200,bd=10,bg='#498240',relief=RIDGE).grid(row=1,column=0)
homeBtn = Button(homeFrame,text='Customer Management').grid(row=0,column=0)


root.mainloop()

截图:

这里我提到了按钮的位置,请帮我把按钮放在那里。

【问题讨论】:

标签: python user-interface tkinter


【解决方案1】:

您陷入了创建小部件并在同一行上使用网格的标准陷阱。

像这样把它们分开

homeFrame = Frame(root,width=screen_width,height=screen_height-200,bd=10,bg='#498240',relief=RIDGE)
homeFrame.grid(row=1,column=0)
homeBtn = Button(homeFrame,text='Customer Management')
homeBtn.grid(row=0,column=0)

如果你这样做

homeFrame = Frame(root).grid()

homeFrame 将包含“None”,并且您尝试放置在“None”中的任何小部件都将以 root 作为其父级。但是如果你这样做了

homeFrame = Frame(root)

homeFrame 将包含一个有效的 tkinter 框架实例,可以在其中放置小部件。

教训是,您永远不应该在使用 grid/pack/place 的同一行上创建小部件(除非您不再引用该小部件)

PS,tkinter 框架会自动调整大小以适应任何子小部件,您可以按照此问题How to stop Tkinter Frame from shrinking to fit its contents? 的指导强制它不这样做

【讨论】:

  • 您介意解释一下这个问题吗?所以OP能够理解他做错了什么?
  • @Atlas435 解释。
  • 还有 headFrame。
  • @stark 作为 Xor96 解决的不完整解决方案。
猜你喜欢
  • 2018-05-05
  • 2018-05-11
  • 2022-10-23
  • 2021-06-15
  • 2019-11-28
  • 1970-01-01
  • 2014-05-20
  • 2016-07-19
  • 1970-01-01
相关资源
最近更新 更多