鱼C论坛

 找回密码
 立即注册
查看: 2933|回复: 4

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

[复制链接]
发表于 2021-4-20 15:53:02 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

于是用grid.propogate(0)固定frame大小,这时button始终在frame左上角,sticky改不了位置,是哪出了问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-22 18:35:42 From FishC Mobile | 显示全部楼层
我记得这好像是网格布局,有可能是你其他组件所处的网格占的面积比较大,所以会造成改不了的错觉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-22 18:37:21 From FishC Mobile | 显示全部楼层
你去论坛搜搜,我记得有个软件可以直接通过拖拽生成界面布局的代码,挺好使的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-23 09:40:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 23:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表