Day4 用python写UI-聊聊视窗控件配置管理员-grid方法

今天要介绍的是grid()方法,这个方法就像表格式排版,控件是依据指定的索引位置, 放入表格中,很适合用来处理复杂的页面,一个网格row 跟 column 只能放一个元件,不过也可以用 rowspan跟 columnspan 参数合并邻近的多个网格来放置一个元件,这些参数并不一定要加,没有传入参数时会以预设值排版,常用参数有row、column、rowspan、columnspan、padx/pady、ipadx/ipady 跟 sticky,padx/pady、ipadx/ipady,这几个参数基本上跟pack()用法是一样的

❗❗❗ 要注意一个视窗中不能同时使用 pack 与 grid 排版, 但 place 却可以与 pack 或 grid 同时使用 ❗❗❗

♠♣今天的文章大纲♥♦

  • row跟column的使用
  • rowspan跟columnspan的使用
  • sticky的使用

row跟column的使用

row跟column的起始直都是0,但是没有特别去设定的话,预设值是1

import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry("300x150")

L1=tk.Label(root,text='I am Label',bg='#DDA0DD',fg="#8B008B",
            font=("Algerian",18,"bold"))
L2=tk.Label(root,text='Welcome',bg='#6495ED',fg="#AFEEEE",
            font=("Algerian",18,"bold"))
L3=tk.Label(root,text='Thank you',bg='#FFFACD',fg="#DAA520",
            font=("Algerian",18,"bold"))


L1.grid(row=0,column=0)#网格方法
L2.grid(row=1,column=2)#网格方法
L3.grid(row=1,column=0)#网格方法

root.mainloop()

其实跟pack参数一样,只是需要设定好哪个标签要在哪个位置
下图为执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210916/20140047etWDyvWAHV.png

rowspan跟columnspan的使用

  • columnspan
L1.grid(row=0,column=0,columnspan=2)#网格方法
L2.grid(row=1,column=1)#网格方法
L3.grid(row=1,column=0)#网格方法

下图为执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210916/20140047KSoMcgNUiC.png

  • rowspan
L1.grid(row=0,column=0)#网格方法
L2.grid(row=0,column=1,rowspan=2)#网格方法
L3.grid(row=1,column=0)#网格方法

下图为执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210916/20140047lA3hsI6m0P.png

sticky的使用

这个餐数与 pack() 排版的锚定参数 anchor 很像,但只能设定 E/W/S/N 四个常数,也就是上/下/左/右或用组合的方法

sticky 参数的组合使用:
sticky=N+S:拉长高度使控件在顶端和底端对齐
sticky=W+E:拉长宽度度使控件在左边和右边对齐
sticky=N+S+E:拉长高度使控件在顶端和底端对齐且同时切齐右边
sticky=N+S+W:拉长高度使控件在顶端和底端对齐且同时切齐左边
sticky=N+S+W+E:拉长高度使控件在顶端和底端对齐且同时切齐左右两边

L1.grid(row=0,column=0,columnspan=2,sticky=tk.E+tk.W)#网格方法
L2.grid(row=1,column=1)#网格方法
L3.grid(row=1,column=0)#网格方法

下图为执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210916/20140047ACIEWHUVlt.png


以上就是grid()方法的介绍,有任何问题都可以留言喔,明天就要来聊聊最後一个place()方法了~
/images/emoticon/emoticon24.gif


<<:  Day-18 再次点亮那传递无尽创意的紫色魔方 GameCube

>>:  [Tableau Public] day 19:试着分析appstore资料集-4

第31天~上架

上架 一.打包APK 1.选Buile-Generate Signed Bundle/APK 2.选...

Day 29:「欸!你填一下这张表!」- 弹跳视窗、Modal

「注意,您的表单尚未填写完成」 好,我知道了。 (按下确定) 欸? 为什麽关不掉!? 不是按下确定...

[Day 4] lock-free and CAS

前言 昨天聊到原子操作时提到了2个名词, 有些人可能不熟, 会在今天简单说明。明天会有相应的实作。 ...

[Day05] pod service node kubectl

写在前面 test for placeholder test for placeholder tes...

Unity自主学习(三十):完美物件移动

那昨天後来自己在玩写好的脚本时,发现了会有逻辑上的错误,导致物件撞墙时,会不断产生抖动,而之後也去U...