Tuyun 发表于 2021-4-20 15:53:02

【tkinter布局问题】用grid调整控件在父组件中的位置

想把一个button放在一个frame的正中间。

frame设置好大小后,加入button,frame大小会根据button大小变化。

于是用grid.propogate(0)固定frame大小,这时button始终在frame左上角,sticky改不了位置,是哪出了问题?

小伤口 发表于 2021-4-22 18:35:42

我记得这好像是网格布局,有可能是你其他组件所处的网格占的面积比较大,所以会造成改不了的错觉

小伤口 发表于 2021-4-22 18:37:21

你去论坛搜搜,我记得有个软件可以直接通过拖拽生成界面布局的代码,挺好使的

阿奇_o 发表于 2021-4-23 02:02:50

本帖最后由 阿奇_o 于 2021-4-23 02:24 编辑

# 理解:grid 里的 sticky 参数 到底是如何起作用的?

import tkinter as tk
window = tk.Tk()
window.rowconfigure(0, weight=1, minsize=200)   # row=0,minsize=200 决定每个cell的 最小高多少(row行高,y方向)
# window.columnconfigure(0, weight=1,)
window.columnconfigure(0, weight=1, minsize=300) # column=0, minsize=300 决定每个cell的 最小宽多少(列宽,x方向)
# 注1:weight=1,使之跟随window窗体的大小改变而改变
# 注2:若没有设置row和column的大小,置于其中的组件(如一个button)
#      将难以看出其位置是否改变,因为组件默认会占满整个cell(grid)

btn = tk.Button(master=window, text='Click me' )
btn.grid(sticky='e')    # row=0, column=0 即 第一个cell(grid网格中的第一个单元格)
                        # sticky='e' 相当于“右对齐”,使该组件 在该cell单元格中 右对齐。

#其他组件(如Label)也是一样的原理
tk.Label(master=window, text="I'm a Lable.").grid(sticky='sw')
# tk.Entry(master=window).grid(sticky='se')

window.mainloop()

lengyue869 发表于 2021-4-23 09:40:10

阿奇_o 发表于 2021-4-23 02:02


mark
页: [1]
查看完整版本: 【tkinter布局问题】用grid调整控件在父组件中的位置