tkinter在框架内拉伸小部件

时间:2018-02-20 07:28:09

标签: python user-interface tkinter raspbian

我目前正在尝试制作一个基本的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()

如果按钮不在框架中,我可以让它工作。目前正在发生的是两个按钮没有伸展,并且放在中间并排放置。我可以/应该做些什么来扩展这些按钮?

1 个答案:

答案 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()

以上应该可以达到你想要的效果。