zoukankan      html  css  js  c++  java
  • Python_tkinter(3)_grid布局

     Grid(网格)布局管理器,是Tkinter里面最灵活的几何管理布局器。注意:不要试图在一个主窗口中混合使用pack和grid。

    1.简单的布局

    from tkinter import *
    root = Tk()
    label1 = Label(root, text="用户名:")
    label2 = Label(root, text="密码:")
    entry1 = Entry(root)
    entry2 = Entry(root)
    label1.grid(row=0, padx='10', pady='10')
    label2.grid(row=1)
    entry1.grid(row=0, column=1, padx='10', pady='10')
    entry2.grid(row=1, column=1, padx='10', pady='10')
    mainloop()

     运行结果

    说明:

    (1) label1没写column属性,默认从0开始

    (2) padx 控件与外边框的水平距离;ipadx 控件内文字与控件边框的距离;pady/ipady同理

    2. 对齐方式sticky、合并行rowspan、合并列columnspan

    from tkinter import *
    
    root = Tk()
    label1 = Label(root, text="用户名:")
    label2 = Label(root, text="密码:")
    entry1 = Entry(root)
    entry2 = Entry(root)
    btn1 = Button(root, text="登  录", width='15')
    
    label1.grid(row=0, sticky=E, padx='5')
    label2.grid(row=1, sticky=E, padx='5')
    entry1.grid(row=0, column=1, padx='5', pady='10')
    entry2.grid(row=1, column=1, padx='5', pady='10')
    btn1.grid(row=2, column=0, columnspan=2, pady='10')
    mainloop()

    运行效果:

    说明

     (1) sticky可选的值:N/S/E/W,分别代表上/下/左/右。sticky=E表示靠右显示。

     (2) columnspan合并列

    3.frame结合grid布局

    对稍复杂的布局,网格实现起来费劲的话考虑外层加frame

    from tkinter import *
    
    root = Tk()
    
    frm = Frame(root)
    frm.grid(padx='10', pady='10')
    frm_left = Frame(frm)
    frm_left.grid(row=0, column=0, padx='20', pady='10')
    frm_right = Frame(frm)
    frm_right.grid(row=0, column=1, padx='20', pady='10')
    
    btn_left1 = Button(frm_left, text='按 钮 1')
    btn_left1.grid(row=0, pady='20', ipadx='2', ipady='2')
    btn_left2 = Button(frm_left, text='按 钮 2')
    btn_left2.grid(row=1, pady='20', ipadx='2', ipady='2')
    btn_left3 = Button(frm_left, text='按 钮 3')
    btn_left3.grid(row=2, pady='20', ipadx='2', ipady='2')
    btn_left4 = Button(frm_left, text='按 钮 4')
    btn_left4.grid(row=3, pady='20', ipadx='2', ipady='2')
    
    btn_right1 = Button(frm_right, text='按 钮 5')
    btn_right1.grid(row=0, column=0, ipadx='2', ipady='2')
    btn_right2 = Button(frm_right, text='按 钮 6')
    btn_right2.grid(row=0, column=1, ipadx='2', ipady='2')
    txt_right = Text(frm_right, width='45', height='15')
    txt_right.grid(row=1, column=0, columnspan=2, pady='20')
    root.mainloop()

  • 相关阅读:
    OSI及TCP/IP的概念和区别
    http协议介绍
    Http协议之Content-Length
    粒子群优化算法
    十分钟理解Actor模式
    tomcat原理解析(二):整体架构
    tomcat原理解析(一):一个简单的实现
    【linux】CentOS安装mysql*.rpm提示conflicts with file from package的解决办法
    [分布式] 保证分布式系统数据一致性的6种方案
    【svn】 SVN错误:Attempted to lock an already-locked dir
  • 原文地址:https://www.cnblogs.com/happy-xiaoxiao/p/10495810.html
Copyright © 2011-2022 走看看