Python GUI编程学习笔记之tkinter界面布局显示详解


Posted in Python onMarch 30, 2020

本文实例讲述了Python GUI编程学习笔记之tkinter界面布局显示。分享给大家供大家参考,具体如下:


相关内容:

  • pack
    • 介绍
    • 常用参数
    • 使用情况
    • 常用函数
  • grid
    • 介绍
    • 常用参数
    • 使用情况
    • 常用函数
  • place
    • 介绍
    • 常用参数
    • 使用情况
    • 常用函数

首发时间:2018-03-04 14:20


pack:

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可以将控件区块式摆放.Python GUI编程学习笔记之tkinter界面布局显示详解
    • 常用参数:
      • row: 行号,区分不同控件是否处于同一行
      • column: 列号,区分不同控件是否处于同一列
      • sticky: 决定控件的贴靠方向,该选项从集合N,S,E,W [东南西北的意思],中取一个或多个值。比如要将标签与左边框对齐,可以使用W(西)Python GUI编程学习笔记之tkinter界面布局显示详解Python GUI编程学习笔记之tkinter界面布局显示详解
      • rowspan:行跨度,决定某个控件占的行数 ,默认一行
      • columnspan:列跨度,决定某个控件占的列数,默认一列
      • ipadx, ipady:内边距
      • padx,pady:外边距
    • 适用情况:
      • 设计对话框的时候特别方便Python GUI编程学习笔记之tkinter界面布局显示详解
      • 区块化摆放的时候
    • 补充:
      • 常用函数:
        • 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:

    • 介绍:可以使用绝对的位置或相对位置来摆放控件。 Python GUI编程学习笔记之tkinter界面布局显示详解 Python GUI编程学习笔记之tkinter界面布局显示详解
    • 常用参数:
      • x:控件在窗口中的x坐标
      • y:控件在窗口中的y坐标Python GUI编程学习笔记之tkinter界面布局显示详解
      • relx,rely:与主窗口的相对位置,比如Python GUI编程学习笔记之tkinter界面布局显示详解
      • 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程序设计有所帮助。

Python 相关文章推荐
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
Python实现在线音乐播放器
Mar 03 Python
一个基于flask的web应用诞生(1)
Apr 11 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
Python实现的knn算法示例
Jun 14 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
python3字符串操作总结
Jul 24 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 #Python
动态设置django的model field的默认值操作步骤
Mar 30 #Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 #Python
django 实现手动存储文件到model的FileField
Mar 30 #Python
解决django FileFIELD的编码问题
Mar 30 #Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 #Python
Django 删除upload_to文件的步骤
Mar 30 #Python
You might like
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
python批量制作雷达图的实现方法
2016/07/26 Python
python微信公众号之关键词自动回复
2018/06/15 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
python SocketServer源码深入解读
2019/09/17 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
python实现猜拳游戏项目
2020/11/30 Python
销售人员自我评价
2014/02/01 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
个人租房协议书样本
2014/10/01 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
同学聚会开幕词
2019/04/02 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js