Python tkinter 笔记 [pack,place,grid 布局管理]

疫情期间无聊,重回python练习GUI,网上基本PYQT5教程笔记多,但详细tkinter 的内容过少,因此笔记记录。

1. 布局方法

pack() 方法

after=widget - #紧接后续控件
anchor=NSEW (or subset) - # 坐标指定方向N,S,E,W 分别代表东西南北四个方位
before=widget - 放在控件之前
expand=bool - 若为1,同步放大控件
fill=NONE   #设置控件全填充 ‘X’横方向 or ‘Y’纵方向 or ‘BOTH’全屏方向
in=master #包含控件
in_=master #包含控件,in_方便关键字用法
ipadx=amount #横轴留余(内部留白的空间距离)
ipady=amount #纵轴留余 (内部留白的空间距离)
padx=amount  #横轴间余(外部间隔的空间距离)
pady=amount  #纵轴间余 (外部间隔的空间距离)
side=TOP or BOTTOM or LEFT or RIGHT #放置的空间方位


place()方法
 in=master   #放置主控件内
 in_=master  #同上
 x=amount   #坐标位置x
 y=amount   #坐标位置y
 relx=amount  #x位置窗口比例
 rely=amount  #y位置窗口比例
 anchor=NSEW  #位置方向
 width=amount   #像素宽
 height=amount   #像素高
 relwidth=amount  #宽度比例,0-1 之间
 relheight=amount   #高度比例,0-1之间
 bordermode="inside" or "outside"   #考虑主控件边框

Grid() 方法
column=number 单元格的列0
columnspan=number   占多个单元格列
in=master 
in_=master 
ipadx=amount 
ipady=amount 
padx=amount 
pady=amount 
row=number   #行数 与column 相同
rowspan=number  #占多个行
sticky=NSEW  #单元格方位

2. 布局使用

2.1 主界面框架如下,则方便使用 grid() 方法来排布

 3. 实例 -python电子书

源码

import tkinter
import tkinter as tk

class window:
    def __init__(self):
        self.root = tk.Tk()
        self.root.geometry('900x600')

        self.listbox = tk.Listbox(self.root,width=35)
        for i in range(100):
            self.listbox.insert("end", "文章标题:"+str(i))
        self.listbox.pack(side="left", fill="both",padx=2,pady=10)
        self.article = tk.Label(self.root,text = "这里面是文章内容",bg='light green',justify=tk.LEFT).pack(side='top',padx=2,pady=10,fill='both',expand=1)
        self.scrollbar = tk.Scrollbar(self.article, orient=tk.HORIZONTAL)
        self.root.mainloop()

if __name__ == '__main__':
    app = window()

最后用pyinstaller 到出exe 即可

原文地址:https://www.cnblogs.com/nerocm/p/12427893.html