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='') label1.grid(row=0, sticky=E, padx='')
label2.grid(row=1, sticky=E, padx='')
entry1.grid(row=0, column=1, padx='', pady='')
entry2.grid(row=1, column=1, padx='', pady='')
btn1.grid(row=2, column=0, columnspan=2, pady='')
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='', pady='')
frm_left = Frame(frm)
frm_left.grid(row=0, column=0, padx='', pady='')
frm_right = Frame(frm)
frm_right.grid(row=0, column=1, padx='', pady='') btn_left1 = Button(frm_left, text='按 钮 1')
btn_left1.grid(row=0, pady='', ipadx='', ipady='')
btn_left2 = Button(frm_left, text='按 钮 2')
btn_left2.grid(row=1, pady='', ipadx='', ipady='')
btn_left3 = Button(frm_left, text='按 钮 3')
btn_left3.grid(row=2, pady='', ipadx='', ipady='')
btn_left4 = Button(frm_left, text='按 钮 4')
btn_left4.grid(row=3, pady='', ipadx='', ipady='') btn_right1 = Button(frm_right, text='按 钮 5')
btn_right1.grid(row=0, column=0, ipadx='', ipady='')
btn_right2 = Button(frm_right, text='按 钮 6')
btn_right2.grid(row=0, column=1, ipadx='', ipady='')
txt_right = Text(frm_right, width='', height='')
txt_right.grid(row=1, column=0, columnspan=2, pady='')
root.mainloop()

Python_tkinter(3)_grid布局的更多相关文章

  1. Python_tkinter(1)_窗口创建与布局

    环境:Python 3.7.2 1. 窗口基本创建(窗口标题.窗口大小) import tkinter from tkinter import * # 初始化Tk() root = Tk() # 设置 ...

  2. bootstrap深入理解之格子布局

    一.源码文件: _grid.scss:格子系统类文件 Mixins/_grid.scss:支持格子系统实现的mixin集合 Mixins/_grid-framework.scss:格子系统实现的核心m ...

  3. 前端框架 EasyUI (2)页面布局 Layout

    在 Web 程序中,页面布局对应用程序的用户体验至关重要. 在一般的信息管理类的 Web 应用程序中,页面结构通常有一个主工作区,然后在工作区上下左右靠近边界的区域设置一些边栏,用于显示信息或放置一些 ...

  4. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  5. CSS HTML元素布局及Display属性

    本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...

  6. 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  7. Xamarin+Prism开发详解五:页面布局基础知识

    说实在的研究Xamarin到现在,自己就没设计出一款好的UI,基本都在研究后台逻辑之类的!作为Xamarin爱好者,一些简单的页面布局知识还是必备的. 布局常见标签: StackLayout Abso ...

  8. 界面设计技法之css布局

    css布局之于页面就如同ECMAScript之于JS一般,细想一番,html就如同语文,css就如同数学,js呢,就是物理,有些扯远,这里就先不展开了. 回到主题,从最开始的css到如今的sass(l ...

  9. Android如何制作漂亮的自适布局的键盘

    最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路. 这里最上面的titlebar高度固定,下面输入的金额高 ...

随机推荐

  1. 51nod 1228、1258 序列求和

    这里一次讲两题...貌似都是板子? 所以两题其实可以一起做 [雾 noteskey 总之就是伯努利数的两道入门题啦,就是第二道有点鬼畜了,居然要任意模数的!(好吧是 1e9+7 但也没什么区别了) 伯 ...

  2. mycat 测试主从读写分离

    下载解压及创建用户组和目录属性 下载地址:1.https://github.com/MyCATApache/Mycat-download.2.http://dl.mycat.io/ wget http ...

  3. React native 无法弹出调试控件的问题

    React Native 在debug模式下,可以通过摇动手机,弹出调试选项.但是今天利用了cocoapods 把react native 文件整理后,调试界面就弹不出了,其他功能正常.查了好久,发现 ...

  4. 使用Jmeter监测服务器性能指标

    jmeter监控服务器CPU.内存等性能参数,需要安装一些插件 插件名:JMeterPlugins-Extras,JMeterPlugins-Standard 以及ServerAgent. 下载地址: ...

  5. openwrt MT7628 编译前更改为DHCP,root 密码、ssid、时区、主机名

    一.设置为DHCP动态获取ip地址 在:/home/OpenWrt/openwrt_CC_mt76xx_zhuotk_source/ 目录下,新建文件名/files/etc/config. 将配置好的 ...

  6. jsp 安全

    一.  身份验证和授权 认证是检验某人真正是他/她自称的那个人的过 程.在一个Servlet/JSP应用程序中,身份验证一般通过 检查用户名密码是否正确.授权是检查该级别的用户是 否具备访问权限.它适 ...

  7. Eclipse连接HBase 报错:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

    在eclipse中连接到HBase报错org.apache.hadoop.hbase.PleaseHoldException: Master is initializing,搜索了好久,网上其它人说的 ...

  8. ansible的logging模块用来写日志

    [root@node-1 library]# cat dolog.py #!/bin/env python ANSIBLE_METADATA = { 'metadata_version': 'alph ...

  9. c++ explicit 构造函数

    代码 #include<iostream> using namespace std; class Example { private: int data; public: Example( ...

  10. c++ typeid

    简单使用 #include<iostream> #include<string> #include<new> #include<typeinfo> us ...