• Tkinter grid() 布局


    Tkinter grid() 布局

    grid() 方法将控件依照表格的行列方式,来放置在窗体或窗口内。

    grid 会自动根据所有组件的大小来计算其网格的大小。

    1. grid()方法参数选项

    1) row

    此选项设置控件在表格中的第几列。

    2) column

    此选项设置控件在表格中的第几栏。

    3) columnspan

    此选项设置控件在表格中合并栏的数目。

    4) rowspan

    此选项设置控件在表格中合并列的数目。

    2. grid()方法应用实例

    下面的示例是使用 grid() 方法创建一个 5×5 的按钮数组。

    #grid()方法
    from tkinter import *
    #主窗口
    win = Tk()
    #创建窗体
    frame = Frame (win, relief=RAISED, borderwidth=2)
    frame.pack (side=TOP, fill=BOTH, ipadx=5, ipady=5, expand=1)
    
    #创建按钮数组
    for i in range (5):
        for j in range (5):
            Button (frame, text=" (" + str(i) + ","+ str(j)+ ")") .grid(row=i,column=j )
    #开始窗口的事件循环
    win.mainloop()

    示例代码分析如下:

    • 第 6 行:创建一个 Frame 控件,以作为窗体。此窗体的外形突起,边框厚度为 2 像素。
    • 第 7 行:此窗体在窗口的顶端(side=TOP),当窗口改变大小时,窗体会占满整个窗口的剩余空间(fill=BOTH)。控件与窗体边界之间的水平距离是 5 像素,垂直距离是 5 像素。
    • 第 13~12 行:创建一个按钮数组,按钮上的文字是(row, column)。str(i) 是将数字类型的变量 i 转换为字符串类型。str(j) 是将数字类型的变量 j 转换为字符串类型。

     

    from tkinter import *
    
    master = Tk()
    master.geometry('300x300')
    e1 = Button(master,text='First',height=2,width=7,fg='red')
    e2 = Button(master,text='Second',height=3,width=13,fg='blue')
    e1.grid(row=0, column=0)
    e2.grid(row=0, column=1)
    
    mainloop()

    from tkinter import *
    import time
    
    t = Tk()
    t.title('与python聊天中')
    
      #创建frame容器
    frmLT = Frame(width=500, height=320, bg='white')
    frmLC = Frame(width=500, height=150, bg='red')
    frmLB = Frame(width=500, height=30, bg='blue')
    frmRT = Frame(width=200, height=500, bg='yellow')
    
    frmLT.grid(row=0, column=0)
    frmLC.grid(row=1, column=0)
    frmLB.grid(row=2, column=0)
    frmRT.grid(row=0, column=1, rowspan=3)
    mainloop()

    import tkinter as tk
    
    window = tk.Tk()
    # 设置窗口大小
    winWidth = 600
    winHeight = 400
    # 获取屏幕分辨率
    screenWidth = window.winfo_screenwidth()
    screenHeight = window.winfo_screenheight()
    
    x = int((screenWidth - winWidth) / 2)
    y = int((screenHeight - winHeight) / 2)
    
    # 设置主窗口标题
    window.title("Grid参数说明")
    # 设置窗口初始位置在屏幕居中
    window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
    # 设置窗口图标
    window.iconbitmap("./favicon.ico")
    # 设置窗口宽高固定
    window.resizable(0, 0)
    
    frame = tk.Frame(window)
    frame.place(rely=.5, relx=0.5, x=-122.5, y=-100, width=245, height=200)
    # 返回参数信息
    print(frame.place_info())
    
    tk.Label(frame, text="用户名").grid(row=0)
    tk.Label(frame, text="密码").grid(row=1)
    
    username_var = tk.StringVar()
    pwd_var = tk.StringVar()
    tk.Entry(frame, textvariable=username_var).grid(row=0, column=1)
    tk.Entry(frame, show="*", textvariable=pwd_var).grid(row=1, column=1)
    
    photo = tk.PhotoImage(file="./loading.gif")
    tk.Label(frame, image=photo).grid(row=0, rowspan=2, column=2, padx=5, pady=5)
    
    
    def login():
        username = username_var.get()
        password = pwd_var.get()
        print("username=%s, password=%s" % (username, password))
    
    
    tk.Button(frame, text="登录", command=login, padx=20).grid(row=2, columnspan=3)
    
    window.mainloop()

    from tkinter import *
    
    root = Tk()
    Label(root, text="帐号").grid(row=0, sticky=W)
    Label(root, text="密码").grid(row=1, sticky=W)
    v = StringVar()
    v.set("172.0.0.1")
    e1 = Entry(root,textvariable = v)
    e2 = Entry(root)
    e1.grid(row=0, column=1, sticky=E)
    e2.grid(row=1, column=1, sticky=E)
    Button(root,text='登录').grid(row=3, column=1)
    root.mainloop()

    https://www.cnblogs.com/yang-2018/p/11791906.html

    https://blog.csdn.net/nilvya/article/details/106148018

  • 相关阅读:
    编译Linux 2.6内核
    C语言学习参考(基础&进阶)
    用户体验为什么如此重要
    北京讲座:软件企业常见问题和系统性解决方法(7月5日)
    《JavaScript权威指南(第6版)》诚征广大读者参与初译稿审校活动!
    有关正则表达式的研究
    关于分页的研究
    四舍五入等一些不常用代码整理
    最简单CSS实现Table细线表格
    vs2005 SP1补丁安装慢
  • 原文地址:https://www.cnblogs.com/emanlee/p/15340537.html
Copyright © 2020-2023  润新知