python tkinter界面不显示东西_Python:GUI之tkinter学习笔记2界面布局显示

这篇博客详细介绍了Python tkinter库中的三种布局管理器:pack、grid和place。pack按照行或列打包控件,适用于简单布局;grid是格子布局,适合区块化摆放;place允许绝对或相对定位,适合自定义显示。文章通过实例展示了每种布局管理器的参数、使用情况和常用函数,帮助读者更好地理解和应用tkinter进行GUI开发。
摘要由CSDN通过智能技术生成

相关内容:

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:外边距

适用情况:与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()

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 with Tkinter (from youtube) 在youtube上能找到很多编程视频...

Python GUI with Tkinter - 1 - Introduction以上链接是一个python tkinter视频系列的第一讲的链接.虽然英语不好,但是,程序还是看得懂的(照着做就可以 ...

$《利用Python进行数据分析》学习笔记系列——IPython

本文主要介绍IPython这样一个交互工具的基本用法. 1. 简介 IPython是一书中主要用到的Python开发环境,简单来说是对原生python交互环 ...

微信小程序开发:学习笔记[4]——样式布局

微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...

amazeui学习笔记--css(布局相关1)--网格Grid

amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式  

随机推荐

Apache限制某个目录下的PHP文件没有执行权限

为了安全期间,有时我们需要限制网站下的某些目录对于php脚本不能执行. 有两种方法可以参考: 1.  使用.htaccess 文件限制 在要限制php执行的目录下,创建.htaccess文件,加入内容 ...

Distribute numbers to two “containers” and minimize their difference of sum

it can be solved by Dynamical Programming.Here are some useful link: Tutorial and Code: http://www.c ...

php不允许用户提交空表单(php空值判断)

我们在设计提交空的评论时依然可以写入数据库,并在页面显示出来.这显然是不合理的,所以需要我们加入空值判断 可以修改代码,添加些判断: 复制代码代码如下:   if(empty($_POST['name ...

HDU2037 今年暑假不AC 贪心算法

贪心算法 : 贪心算法就是只考虑眼前最优解而忽略整体的算法, 它所做出的仅是在某种意义上的局部最优解, 然后通过迭代的方法相继求出整体最优解. 但是不是所有问题都可以得到整体最优解, 所以选择贪心策略 ...

qmake和moc的功能(★firecat推荐★)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/355100 前面我们 ...

java面向对象基础(二)

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

PHP 框架

LARAVEL/LUMEN,  CI  ,THINKPHP, YII ,SYMFONY YAF, PHALCON ,ICE FRAMEWORK

(原)java 向上转型中,任何域的访问操作都是由编译器解析,不是多态

最近在向java发力,学习学习了下.看到了多态这一节,书中有个比较好的例子,所以就准备写下来,记录下来: package dynamic_binding01; public class dynamic ...

《Python》正则表达式

re模块 正则表达式: 应用场景: 1.判断某一个字符串是否符合规则 (注册时:判断手机号,身份证号,邮箱格式是否正确) 2.将符合规则的内容从一个庞大的字符串体系中提取出来 (爬虫,日志分析) 什么 ...

Linux常用基本命令(chmod)

chmod命令用来改变文件或者目录的权限,只有文件的属主和超级用户才能够执行这个命令 格式: chmod [option] [mode] [file] >常用参数选项 -R : 递归修改目录以及 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值