我目前正在尝试制作一个基本的GUI,其中一个框架内的屏幕底部有5个按钮。我目前拥有一个框架中的2个按钮。框架打包到底部。我试图用这两个按钮填充框架。
##IMPORTS--------------------------------------------
from tkinter import *
import tkinter.font
##GUIWindow------------------------------------------
window = tkinter.Tk()
screen_w = window.winfo_screenwidth()
screen_h = window.winfo_screenheight()
window.geometry('%dx%d' % (screen_w, screen_h))
window.title("betaV00")
myFont = tkinter.font.Font(family = 'Helvetica', size = 12, weight = "bold")
##WIDGET_BottomButtons---------------------------------
h=6
bot_frame = Frame(window, height = int(screen_h/10), width = int(screen_w))
bot_frame.pack(side=BOTTOM)
btn_HOME = Button(bot_frame, text="Home", font=myFont, bg='green', fg='white', height=h)
btn_HOME.grid(row = 0, column = 0)
btn_LEDS = Button(bot_frame, text="LEDS", font=myFont, bg='black', fg='green', height=h)
btn_LEDS.grid(row = 0, column = 1)
bot_frame.columnconfigure(0, weight=1)
bot_frame.columnconfigure(1, weight=1)
##-----------------------------------------------------
window.mainloop()
如果按钮不在框架中,我可以让它工作。目前正在发生的是两个按钮没有伸展,并且放在中间并排放置。我可以/应该做些什么来扩展这些按钮?
答案 0 :(得分:1)
这是因为两个Frame
窗口小部件所在的Button
没有得到任何关于它应该占用多少父节点的指令,因此它只是扩展到最小尺寸它可以包含它的所有孩子。
在这个例子中,如果你想让它们只在x轴上扩展(我假设你这样做,因为你给它们一个静态高度),你需要将属性fill="x"
添加到.pack()
Frame
上的bot_frame
命令,并将属性sticky="NESW"
添加到两个.pack()
小部件上的Button
个命令中。
这将如下所示:
##IMPORTS--------------------------------------------
from tkinter import *
import tkinter.font
##GUIWindow------------------------------------------
window = tkinter.Tk()
screen_w = window.winfo_screenwidth()
screen_h = window.winfo_screenheight()
window.geometry('%dx%d' % (screen_w, screen_h))
window.title("betaV00")
myFont = tkinter.font.Font(family = 'Helvetica', size = 12, weight = "bold")
##WIDGET_BottomButtons---------------------------------
h=6
bot_frame = Frame(window)
bot_frame.pack(side=BOTTOM, fill="x") #here
btn_HOME = Button(bot_frame, text="Home", font=myFont, bg='green', fg='white', height=h)
btn_HOME.grid(row = 0, column = 0, sticky="NESW") #here
btn_LEDS = Button(bot_frame, text="LEDS", font=myFont, bg='black', fg='green', height=h)
btn_LEDS.grid(row = 0, column = 1, sticky="NESW") #and here
bot_frame.columnconfigure(0, weight=1)
bot_frame.columnconfigure(1, weight=1)
##-----------------------------------------------------
window.mainloop()
以上应该可以达到你想要的效果。