我的预期输出是:
_______________________________
|-------------------------------|
| EXAMPLE |
| Label1 |
| ______ _______ ______ |
|| | | | | | |
|| | | | | | |
||______| |_______| |______| |
|_______________________________|
在这里,我想将这三个按钮以固定的距离隔开并居中放置,这意味着按钮的大小是固定的,并且如果用户尝试扩大窗口的大小,则按钮之间的距离比应保持< / p>
这是我的代码:
from tkinter import *
window = Tk()
window.minsize(710, 500)
window.state('zoomed')
window.title('Example')
frame = Frame(window)
frame.pack(fill=BOTH, expand=True)
frame2 = Frame(window)
frame2.pack(fill=BOTH, expand=True)
Label(frame, text="Example", fg='red3',
font=('Eras Bold ITC', '65', 'bold')).pack(anchor = 'n', pady = 50)
Label(frame, text="Label2", fg='blue',
font=('Calibri', '25', 'bold')).pack(anchor = 'e', padx = 40)
Button(frame2, height='10', width='20', text = 'image1').grid(row = 0, column = 0, padx = 20)
Button(frame2, height='10', width='20', text = 'image2').grid(row = 0, column = 6, padx = 20)
Button(frame2, height='10', width='20', text = 'image3').grid(row = 0, column = 12, padx = 20)
mainloop()
这里我使用了grid方法,但是我尝试应用
pack()
,但是它将按钮放置在第一个按钮的正下方
输出: https://i.stack.imgur.com/ItxvB.jpg
预期输出:即使在扩展窗口上(已编辑图像) https://i.stack.imgur.com/Koe34.jpg
答案 0 :(得分:0)
这是在网格中组织小部件的一种方式。
https://i.postimg.cc/yYN0FX3D/tkinter-change-button-position-on-expanding-window-size.png
我从代码中删除了 frame2,只使用了一帧(“frame”)作为容器。 在上面的图片和下面的代码中,您将看到:
tk.
HTH
import tkinter as tk
window = tk.Tk()
window.minsize(710, 500)
window.state('zoomed')
window.title('Example')
# the frame will be the main container, it's a child of the root window
frame = tk.Frame(window)
frame.grid(row=0, column=0, stick='news')
# tell our root window that its grid should be stretchable
window.rowconfigure(0, weight=1)
window.columnconfigure(0, weight=1)
# create a label, child of the frame, in row 0, column 0. It wiil span for 3 cells
tk.Label(frame, text="Example", fg='red3',
font=('Eras Bold ITC', '65', 'bold')).grid(row=0, column=0, columnspan=3)
# create another label, child of the frame, in row 1, column 2
tk.Label(frame, text="Label1", fg='blue',
font=('Calibri', '25', 'bold')).grid(row=1, column=2)
# create another label, child of the frame, in row 1, column 3
tk.Label(frame, text="Label2", fg='blue',
font=('Calibri', '25', 'bold')).grid(row=1, column=3)
# create a button, child of the frame, in row 2, column 0
tk.Button(frame, height='10', width='20', text = 'image1').grid(row = 2, column = 0, padx = 20, pady=40)
# create a button, child of the frame, in row 2, column 1
tk.Button(frame, height='10', width='20', text = 'image2').grid(row = 2, column = 1, padx = 20, pady=40)
# create a button, child of the frame, in row 2, column 2
tk.Button(frame, height='10', width='20', text = 'image3').grid(row = 2, column = 2, padx = 20, pady=40)
# tell our frame that its grid should resize (stretchable) with same ratio for row heights and column widths
frame.rowconfigure(0, weight=1)
frame.rowconfigure(1, weight=1)
frame.columnconfigure(0, weight=1)
frame.columnconfigure(1, weight=1)
frame.columnconfigure(2, weight=1)
frame.columnconfigure(3, weight=1)
window.mainloop()