我试图在这里制作一个警报工具,但作为一个入门者,我要克服一些困难。因此,其中之一是将我的几个小部件对准红色框的中心(top_left_fr),但我可以不知道。有帮助吗?
import time
from tkinter import *
from time import strftime
def time():
string = strftime('%H:%M:%S %p')
lbl.config(text=string)
lbl.after(1000, time)
window = Tk()
window.geometry("700x400")
window.resizable(False, False)
window.grid_columnconfigure(0, weight=1)
top_left_fr = Frame(window, bg="red", width=500, height=250)
top_left_fr.grid(row=0, column=0, sticky=W + E + N + S, columnspan=5)
left_bottom_fr = Frame(window, bg="blue", width=500, height=150, highlightthickness=1, highlightbackground="black")
left_bottom_fr.grid(row=0, column=0, sticky=W + E + S)
right_fr = Frame(window, bg="green", width=200, height=400, highlightthickness=1, highlightbackground="black")
right_fr.grid(row=0, column=1)
time_lbl = Label(top_left_fr, text="REAL TIME", font=('calibri', 20, 'bold'))
time_lbl.grid(row=0, column=0, pady=(10, 0))
add_but = Button(top_left_fr, text="Αdd")
add_but.grid(row=3, column=3)
lbl = Label(top_left_fr, font=('calibri', 20, 'bold'),
background='black',
foreground='white')
lbl.grid(row=1, column=2, pady=10)
time()
window.mainloop()
答案 0 :(得分:0)
需要最少代码量的解决方案是使用pack
而不是grid
。默认情况下,pack
会将小部件置于其放置位置的中央。
您还需要调整红色框,以使其与绿色框不重叠,方法是在添加红色框时将其移除columnspan
。
top_left_fr.grid(row=0, column=0, sticky=W + E + N + S)
...
time_lbl.pack(side="top", fill="x")
lbl.pack(side="top", fill="x")
add_but.pack(side="top", fill="x")
如果要使用grid
,则需要确保将包含窗口小部件的列配置为展开以填充所有其他空间。默认情况下,grid
将使小部件在分配的空间中居中。与pack
一样,添加红色框时需要删除columnspan
。
top_left_fr.grid(row=0, column=0, sticky=W + E + N + S)
top_left_fr.grid_columnconfigure(0, weight=1)
...
time_lbl.grid(row=0, column=0)
lbl.grid(row=1, column=0)
add_but.grid(row=2, column=0)