Python:GUI之tkinter学习笔记2界面布局显示
相关内容:
- pack
- 介绍
- 常用参数
- 使用情况
- 常用函数
- grid
- 介绍
- 常用参数
- 使用情况
- 常用函数
- place
- 介绍
- 常用参数
- 使用情况
- 常用函数
首发时间:2018-03-04 14:20
pack:
- 介绍:
- pack几何管理器按行或列打包小部件。 可以使用填充fill,展开expand和靠边side等选项来控制此几何体管理器。
- pack的排放控件的形式就像将一个个控件按大小从上到下放过去
- 在窗口不设定大小的而使用pack进行布局的情况下,窗口默认大小为刚好包裹所有控件的大小
- 默认情况下添加的控件是居中且占据整行的
- 常用参数:
- fill:填充分配给控件的空间,fill:X为填充X轴方向,Y为Y轴方向,BOTH为X+Y
- expand:先按普通标准来规定控件大小,如果后面窗口还剩下空间,那么会分给那些expand=True的控件,如图中是两个不同大小的按钮,其中2expand=True
,当使用expand=True时,side将不会生效!
- side:使控件靠窗口的指定方向并排,side可取值LEFT,RIGHT,TOP,BOTTOM.
- anchor:对齐方式,可取值“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”(默认为” center”)
- ipadx, ipady:内边距
- padx,pady:外边距
- fill:填充分配给控件的空间,fill:X为填充X轴方向,Y为Y轴方向,BOTH为X+Y
- 适用情况:与gird相比,pack有一定的局限性,但在一些但很常见的情况下使用起来要容易得多:
- 将一个小部件放入一个框架(或任何其他容器小部件)中,并让它填充整个框架
- 将多个小部件放在一起
- 并排放置一些小部件
- 补充:
- 常用函数:
- pack_propagate(flag):由窗口调用来配置pack控件时窗口的大小,当flag=0时,那么窗口大小将不再仅仅包裹住所有控件,这时候窗口的高度和宽度设置才可以生效
- pack_forget():移除控件,但并没有进行摧毁,可以再次使用pack或其他方式来显示
- pack_info():返回pack提供的选项所对应得值。
- pack_slaves():以列表方式返回本组件的所有子组件对象。
- 常用函数:
from tkinter import *
root=Tk() # for i in range(10):
##side
# btn = Button(text=i)
# btn.pack(side=LEFT)
# btn.pack(side=RIGHT)
# btn.pack(side=(TOP,LEFT)) ####fill
# btn.pack(fill=X)
# btn.pack(side=LEFT,fill=Y)
# btn.pack(fill=BOTH) ##expand
# btn1=Button(text=1,bg='green')
# btn2=Button(text=2,bg='yellow')
# btn1.pack(fill=X)
# btn2.pack(expand=True)
#anchor:
# btn1=Button(text=1,bg='green')
# btn2=Button(text=2,bg='yellow')
# btn1.pack(fill=X)
# btn2.pack(anchor=E) #pack_propagete
# btn1=Button(text=1,bg='green')
# btn2=Button(text=2,bg='yellow')
# root.pack_propagate(0)
# btn1.pack()
# btn2.pack() #pack_forget:
# import time,threading
# label=Label(text="警告!")
# label.pack()
# def run():
# start_time=time.time()
# while True:
# if time.time()-start_time>3:
# label.pack_forget()
# break
# t=threading.Thread(target=run)
# t.setDaemon(True)
# t.start() root.mainloop()
grid:
- 介绍:grid是格子的意思,grid可以将控件区块式摆放.
- 常用参数:
- row: 行号,区分不同控件是否处于同一行
- column: 列号,区分不同控件是否处于同一列
- sticky: 决定控件的贴靠方向,该选项从集合N,S,E,W [东南西北的意思],中取一个或多个值。比如要将标签与左边框对齐,可以使用W(西)

- rowspan:行跨度,决定某个控件占的行数 ,默认一行
- columnspan:列跨度,决定某个控件占的列数,默认一列
- ipadx, ipady:内边距
- padx,pady:外边距
- 适用情况:
- 设计对话框的时候特别方便
- 区块化摆放的时候
- 设计对话框的时候特别方便
- 补充:
- 常用函数:
- grid_forget :移除控件,但并没有进行摧毁,可以再次使用grid或其他方式来显示 [grid_remove有同样作用]
grid_propagete:由窗口调用来配置pack控件时窗口的大小,当flag=0时,那么窗口大小将不再仅仅包裹住所有控件,这时候窗口的高度和宽度设置才可以生效
grid_slaves():以列表方式返回本组件的所有子组件对象。
- 常用函数:
from tkinter import * root=Tk()
root.title("我的窗口")
label_user=Label(text='用户名:',bg='green')
label_pwd=Label(text='密码:',bg='green')
user=Entry()
pwd=Entry()
# row,column,sticky
label_user.grid(row=0,column=0,sticky=W) #一个有sticky,一个没有sticky,以作区分
label_pwd.grid(row=1,column=0)
# rowspan,columnspan
user.grid(row=0,column=1)
pwd.grid(row=1,column=1)
btn=Button(text="提交")
btn.grid(row=0,column=3,rowspan=2,columnspan=2,padx=5, pady=5)
# 下面主要是将第一列拉大来显示上面sticky的效果
v=IntVar()
check=Checkbutton(text="下次自动登录",variable=v,)
check.grid(row=2,column=0,sticky=W) # _forget:
import time,threading
label=Label(text="欢迎登录!",bg='blue')
label.grid()
def run():
start_time=time.time()
while True:
if time.time()-start_time>3:
label.grid_forget()
break
t=threading.Thread(target=run)
t.setDaemon(True)
t.start() root.mainloop()
place:
- 介绍:可以使用绝对的位置或相对位置来摆放控件。
- 常用参数:
- x:控件在窗口中的x坐标
- y:控件在窗口中的y坐标
- relx,rely:与主窗口的相对位置,比如
- relwidth,relheight:相对大小,比如height=0.5,width=0.5时控件占据窗口的四分之一大小
- 适用情况:
- 自定义显示方式
- 将按钮定位在对话框中
- 补充:
- 常用函数:
- place_forget():移除控件,但并没有进行摧毁,可以再次使用place或其他方式来显示
- place_slaves():以列表方式返回本组件的所有子组件对象。[slaves()具有同样功能]
- place_info():返回place提供的选项所对应得值。
- 常用函数:
from tkinter import * root=Tk()
root.geometry('100x100')
label=Label(text="用户名:",bg='green')
entry=Entry()
label.pack(fill=X)
#x,y
# entry.place(x=0,y=0) #relx,rely
# entry.place(relx=0.3, rely=0.3)
# entry.place(relx=0.5, rely=0.5) #relheight,relwidth
# entry.place(relx=0.5, rely=0.5,relheight=0.5,relwidth=0.5) #_forget:
import time,threading
label2=Label(text="警告!",bg='blue')
label2.place(relx=0.2,rely=0.2)
def run():
start_time=time.time()
while True:
if time.time()-start_time>3:
label2.place_forget()
break
t=threading.Thread(target=run)
t.setDaemon(True)
t.start() root.mainloop()
想要了解更多,可以参考tkinter的官方文档:http://effbot.org/tkinterbook/
Python:GUI之tkinter学习笔记2界面布局显示的更多相关文章
- Python:GUI之tkinter学习笔记1控件的介绍及使用
相关内容: tkinter的使用 1.模块的导入 2.使用 3.控件介绍 Tk Button Label Frame Toplevel Menu Menubutton Canvas Entry Mes ...
- Python:GUI之tkinter学习笔记之messagebox、filedialog
相关内容: messagebox 介绍 使用 filedialog 介绍 使用 首发时间:2018-03-04 22:18 messagebox: 介绍:messagebox是tkinter中的消息框 ...
- Python:GUI之tkinter学习笔记3事件绑定
相关内容: command bind protocol 首发时间:2018-03-04 19:26 command: command是控件中的一个参数,如果使得command=函数,那么点击控件的时候 ...
- Python GUI编程(Tkinter) windows界面开发
Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...
- Python GUI with Tkinter (from youtube) 在youtube上能找到很多编程视频...
Python GUI with Tkinter - 1 - Introduction以上链接是一个python tkinter视频系列的第一讲的链接.虽然英语不好,但是,程序还是看得懂的(照着做就可以 ...
- $《利用Python进行数据分析》学习笔记系列——IPython
本文主要介绍IPython这样一个交互工具的基本用法. 1. 简介 IPython是<利用Python进行数据分析>一书中主要用到的Python开发环境,简单来说是对原生python交互环 ...
- 微信小程序开发:学习笔记[4]——样式布局
微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...
- amazeui学习笔记--css(布局相关1)--网格Grid
amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式 <div class=&q ...
随机推荐
- linux系统添加swap(虚拟内存)分区
在实际的生产环境中,实际的物理内存我们经常会觉得不够用,增加物理内存的成本又比较高,一种折中方案就出来了,使用硬盘的一部分空间来做Swap(windows 下叫虚拟内存),将系统内非活动内存换页到 ...
- 一些java多线程的经验
多线程的时候,可以try--catch后再catch中加continue让程序继续运行(当然,前提是这个异常的数据不影响后续的操作)
- LDA-线性判别分析(一)预备知识
本来是要调研 Latent Dirichlet Allocation 的那个 LDA 的, 没想到查到很多关于 Linear Discriminant Analysis 这个 LDA 的资料.初步看了 ...
- Windows抓屏技术
Windows桌面共享中一些常见的抓屏技术 1. BitBlt 我想做Windows开发应该都知道这个API, 它能实现DC间的内容拷贝, 如果我们把源DC指定成Monitor DC或是桌面DC, ...
- 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- bigdata-01-应用
1, 基本概念 在互联网技术发展到现今阶段,大量日常.工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数 ...
- 和我一起打造个简单搜索之Logstash实时同步建立索引
用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...
- visual studio code 在 mac 下按 F12无效
vsc 默认通过 F12可以查看定义(Go to Definition),可以查看类或方法的定义: 但是在 mac 环境下,有时按 F12并不生效,但是菜单栏的 Go 选项是被启动的,此时需要进行 2 ...
- php,vue,vue-ssr 做出来的页面有什么区别?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由shirishiyue发表于云+社区专栏 目前我这边的web页面,都是采用php+smarty模板生成的,是一种比较早期的开发模式.好 ...
- PHP中文转拼音函数
<?php function Pinyin($_String, $_Code='UTF8'){ //GBK页面可改为gb2312,其他随意填写为UTF8 $_DataKey = "a| ...