Tkinter教程之Pack篇

Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法_python grid 有before Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助! 阅读详情
'''Tkinter教程之Pack篇'''
#Pack为一布局管理器,可将它视为一个弹性的容器
'''1.一个空的widget'''
#不使用pack
#
 -*- coding: cp936 -*-
from Tkinter import *
root 
= Tk()
# 查看当前root下的子组件,解释器没有报异常,说明Pack已创建,并可以使用,此时的输出为空,即root没有任何子组件。
print root.pack_slaves()
# 向root中pack一个Label
Label(root,text = 'pack').pack()
# 再次打印出root的子组件,可以看到已经包含一个组件,即刚才创建的Label,说明Label调用pack()是将自己加入到了root中。
print root.pack_slaves()
root.mainloop()
# pack_salves打印当前组件包拥有的子组件,通过这个函数可以查看各个组件是否有包含关系。
'''2.root与Pack的关系'''
# -*- coding: cp936 -*-
#
 使用文字create_text
from Tkinter import *
root 
= Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print root.pack_slaves()
Label(root,text 
= 'pack').pack()
print root.pack_slaves()
root.mainloop()
#可以看出Pack的结果没有什么变化,它不对root产生影响,也就是说Pack可以“缩小”至只包含一个Label组件,root可以自己控件自己的大小。
'''3.向Pack中添加多个组件'''
# -*- coding: cp936 -*-
#
 向Pack中添加多个Label
from Tkinter import *
root 
= Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print root.pack_slaves()
for i in range(5):
    Label(root,text 
= 'pack' + str(i)).pack()
print root.pack_slaves()
root.mainloop()
# 使用用默认的设置pack将向下添加组件,第一个在最上方,然后是依次向下排列。注意最后一个Label的显示不完全,稍后解释原因
'''4.固定设置到自由变化'''
# 上例中看到label4没有显示完全
#
 -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
#去掉下面的这句
#
root.geometry('80x80+0+0')
print root.pack_slaves()
for i in range(5):
    Label(root,text 
= 'pack' + str(i)).pack()
print root.pack_slaves()
root.mainloop()
#使用用默认的设置pack将向下添加组件,第一个在最上方,然后是依次向下排列。这样的话最后一个已经显示出来的,这就是为什么称Pack为弹性的容器的原因了,虽然有这个特性,但它并不是总是能够按照我们的意思进行布局,我们可以强制设置容器的大小,以覆盖Pack的默认设置。Pack的优先级低。
'''5.fill如何控制子组件的布局'''
# -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性
Label(root,text = 'pack1',bg = 'red').pack(fill = Y)
Label(root,text 
= 'pack2',bg = 'blue').pack(fill = BOTH)
Label(root,text 
= 'pack3',bg = 'green').pack(fill = X)
print root.pack_slaves()
root.mainloop()
#第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,注意Pack只会吝啬地给出可以容纳这三个组件的最小区域,它不允许使用剩余的空间了,故下方留有“空白”。
'''6.expand如何控制组件的布局'''
# -*- coding: cp936 -*-
#
 这个属性指定如何使用额外的空间,即上例中留下来的“空白”
from Tkinter import *
root 
= Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性
Label(root,text = 'pack1',bg = 'red').pack(fill = Y,expand = 1)
Label(root,text 
= 'pack2',bg = 'blue').pack(fill = BOTH,expand = 1)
Label(root,text 
= 'pack3',bg = 'green').pack(fill = X,expand = 0)
print root.pack_slaves()
root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,这个例子中第一个Label和第二个Label使用了expand = 1属性,而第三个使用expand = 0属性,改变root的大小,可以看到Label1和Label2是随着root的大小变化而变化(严格地它的可用空间在变化),第三个只中使用fill进行X方向上的填充,不使用额外的空间。
'''7.改变组件的排放位置'''
# 使用side属性改变放置位置
#
 -*- coding: cp936 -*-
from Tkinter import *
root 
= Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性,改为水平放置
#
 将第一个Label居左放置
Label(root,text = 'pack1',bg = 'red').pack(fill = Y,expand = 1,side = LEFT)
# 将第二个Label居右放置
Label(root,text = 'pack2',bg = 'blue').pack(fill = BOTH,expand = 1,side = RIGHT)
# 将第三个Label居左放置,靠Label放置,注意它不会放到Label1的左边
Label(root,text = 'pack3',bg = 'green').pack(fill = X,expand = 0,side = LEFT)
print root.pack_slaves()
root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,这个例子中第一个Label和第二个Label使用了expand = 1属性,而第三个使用expand = 0属性,改变root的大小,可以看到Label1和Label2是随着root的大小变化而变化(严格地它的可用空间在变化),第三个只中使用fill进行X方向上的填充,不使用额外的空间。
'''8.设置组件之间的间隙大小'''
# ipadx设置内部间隙
#
 padx设置外部间隙
#
 -*- coding: cp936 -*-
#
 不设置root的大小,使用默认
from Tkinter import *
root 
= Tk()
# 改变root的大小为80x80
#
 root.geometry('80x80+0+0')
print root.pack_slaves()
# 创建三个Label分别使用不同的fill属性,改为水平放置
#
 将第一个LabelFrame居左放置
L1 = LabelFrame(root,text = 'pack1',bg = 'red')
# 设置ipadx属性为20
L1.pack(side = LEFT,ipadx = 20)
Label(L1,
      text 
= 'inside',
      bg 
= 'blue'
      ).pack(expand 
= 1,side = LEFT)
L2 
= Label(root,
           text 
= 'pack2',
           bg 
= 'blue'
           ).pack(fill 
= BOTH,expand = 1,side = LEFT,padx = 10)
L3 
= Label(root,
           text 
= 'pack3',
           bg 
= 'green'
           ).pack(fill 
= X,expand = 0,side = LEFT,pady = 10)
print root.pack_slaves()
root.mainloop()
#为了演示ipadx/padx,创建了一个LabelFrame设置它的ipadx为20,即内部间隔值为20,它的子组件若使用则会留出20个单位;Label2和Label3分别设置x和y方向上的外部间隔值,所有与之排列的组件会与之保留10个单位值的距离

 
立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局 本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。 阅读详情

相关推荐

cadence capture CIS 之添加数据库

2021-08-20 cadence capture CIS 之添加数据库准备一、添加数据源 准备 1、数据库文件(*.mdb) 2、电脑上安装好 cadence 软件 一、添加数据源 打开“ ODBC数据源管理器” ( 路径:C:\Windows\SysWOW64\odbcad32.exe ) ...

weixin_42256550的博客 6047

Python-tkinter模块中pack详细说明

Python 的tkinter模块中的pack布局管理器是一种简单而强大的工具,用于自动管理窗口组件的布局。pack允许你将组件添加到窗口中,并根据添加顺序自动排列它们。以下是pack。

qq_42078147的博客 1868

PCRNet: Point Cloud Registration Network using PointNet Encoding

PCRNet算是在ModelNet40这种object-centric数据集上用deep-learning做配准最好入手的一篇文章了,整体架构涉及简洁明了,一句话描述就是简单粗暴,话不多说,直接上网络架构图: Work Flow: 首先对输入source (N×3N \times 3N×3)与template (M×3M \times 3M×3)进行PointNet操作,即MLP + max-pooling后,分别得到描述各自点云的维度为1024的global feature vector:Φ(PS).

dloading7的博客 1646

python tkinter pack_Tkinter pack()布局

所有 tkinter 控件都可以使用以下方法设置控件在窗口内的几何位置。pack():将控件放置在父控件内之前,规划此控件在区块内的位置。grid():将控件放置在父控件内之前,规划此控件为一个表格类型的架构。place():将控件放置在父控件内的特定位置。本节重点介绍 pack() 方法。后面会介绍另外两个方法。pack() 方法依照其内的属性设置,将控件放置在 Frame 控件(窗体)或窗口内...

weixin_39573981的博客 1413

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

Python tkinter -第三章 tkinter (窗口创建与Pack布局)

第3章 tkinter 3.1 第一个tkinter程序 tkinter的程序很容易编写。难点是在后面的布局以及参数的传递。很多控件(Widget)的使用方法都可以从网络上快速的找到。

weixin_42272768的博客 1万+

【Godot4自学手册】第一节配置Godot运行环境

Godot是一款自由开源、由社区驱动的 2D 和 3D 游戏引擎!它是一款功能丰富的跨平台游戏引擎,可以通过统一的界面创建 2D 和 3D 游戏。它提供了一套全面的通用工具,因此用户可以专注于制作游戏,而无需重新发明轮子。游戏可以一键导出到多个平台,包括主流的桌面平台(Linux、macOS、Windows)、移动平台(Android、iOS)、基于 Web 的平台以及主机平台。

zhaoyang314的博客 5981

python之tkinter Pack使用

packer 是TK的几何管理机制之一。几何管理器用于指定小部件在其容器中的相对位置。packer 采用定性关系规范–above, to the left of, filling,等–并为您确定准确的放置坐标。 任何主部件的大小由内部“从部件”的大小决定。packer用于控制从部件在主部件中的位置,从部件被打包到主部件中。您可以将小部件打包到frame中,将frame打包到其他frame中,以实现您希望的布局类型。此外,一旦配置被打包,该配置就被动态调整以适应对配置的增量变化。 注意,部件在用几何图形管理器

KEN Bolg 6021

Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序

weixin_43178406的博客 11万+

从零到一:Python+Playwright 实现动态网站全量数据采集实战(附反爬对抗与性能优化)

在动手之前,先明确武器优势: 2. 项目结构规划 为了代码可维护性,我们采用模块化结构: 三、核心实战:构建动态采集器 第一步:初始化“隐身”浏览器 普通启动容易被检测,我们需要注入一段 JS 脚本来抹除自动化特征。 第二步:处理无限滚动与动态加载 这是动态网站的核心难点。我们需要模拟人类滚动,并等待新数据加载完成。 第三步:登录态保持与复用 避免每次运行都重新登录。我们将 Cookie 保存到本地,下次直接加载。 第四步:主流程编排 将上述模块串联起来,并加入异常重试机制。 四、进阶优化:性能与反爬

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1161

Python Tkinter教程之Pack篇

'''Tkinter教程之Pack篇''' #Pack为一布局管理器,可将它视为一个弹性的容器 '''1.一个空的widget''' #不使用pack # -*- coding: cp936 -*- from Tkinter import * root = Tk() # 查看当前root下的子组件,解释器没有报异常,说明Pack已创建,并可以使用,此时的输出为空,即root没有任何子

it技术学习 7928

全功能爬虫框架:Botasaurus 的详细使用(现代化、反检测、高并发的智能爬虫框架)

Botasaurus是一个基于 Python 的全栈式智能数据采集框架。它深度融合了以下关键技术: 无头浏览器自动化(Headless Browser Automation):基于 Playwright 或 Puppeteer,支持 Chromium、Firefox、WebKit; 高级反检测引擎(Anti-Detection Engine):自动绕过 WebDriver、Canvas、AudioContext 等 50+ 种指纹检测; 声明式任务模型(Declarative Task Model):用装

数据知道的博客 4370

Python Tkinter教程之Pack篇----把单选按钮横向排列

''Tkinter教程之Pack篇''' #Pack为一布局管理器,可将它视为一个弹性的容器 '''1.一个空的widget''' #不使用pack # -*- coding: cp936 -*- from Tkinter import * root = Tk() # 查看当前root下的子组件,解释器没有报异常,说明Pack已创建,并可以使用,此时的输出为空,即root没有任何子组

zouxfbj的博客 9399

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

'''Tkinter教程之Pack篇'''

'''Tkinter教程之Pack篇''' (转自:http://www.51testing.com/?uid-115892-action-viewspace-itemid-241508) #Pack为一布局管理器,可将它视为一个弹性的容器 '''1.一个空的widget''' #不使用pack # -*- coding: cp936 -*- from tkinter import * root

空山无人,水流花开 924

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python3 tkinter教程pack_Python tkinter之pack

1、默认居中,从上而下#-*- encoding=utf-8 -*-importtkinterfrom tkinter import *if __name__ == '__main__':passwin= tkinter.Tk() #窗口win.title('南风丶轻语') #标题screenwidth = win.winfo_screenwidth() #屏幕宽度screenheight ...

weixin_39880666的博客 451

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python3 GUI编程: 自带图形库 tkinter 学习教程

1、为什么学tkinter tkinter的优缺点 优点:python3 GUI编程需要图形库,常用的有tkinter,wxWidgets,Qt,GTK等等。但是Python自带的库仅仅只是支持Tk的Tkinter,使用Tkinter,不需要安装任何其他包,就可以直接使用。 缺点:tkinter是十分轻量级的,他没有可视化的控件页面和软件,也没办法开发复杂的桌面应用,只能写一写小巧轻量级的小程序。 综上:tkinter适合日常使用,学习成本低,使用场景广。 2、tkinter语法 1、用tk创建一个窗体

小哈里的博客 2671

Python-Tkinter学习笔记

1、一个通用对的GUI模板界面 from tkinter import * from tkinter import messagebox # frame 组件是一个容器,可以用来放置其他的组件 class Application(Frame): def __init__(self, master): super().__init__(master=master) self.master = master self.pack()

qq_52827902的博客 1966

python根窗口的创建_Python接口Tkinter的GUI设计简介,界面,入门,tkinter

根窗口Tkimport tkinter as tk # 导入window = tk.Tk() # 实例化window.title('My Window') # 设置窗口名字window.geometry('500x300') # 设置窗口大小window.mainloop() #窗口循环显示顶层Toplevel与Frame类似,但是它包含窗体属性(如Title)标签LabelLab...

weixin_36049047的博客 471

转:Tkinter教程之Text(2)篇

'''Tkinter教程之Text(2)篇''''''6.使用tag来指定文本的属性'''#创建一个指定背景颜色的TAG#-*-coding:cp936-*-fromTkinterimport*root=Tk()t=Text(root)#创建一个TAG,其前景色为红色t.tag_config('a',foreground='red')#使用TAG'a'来指...

demonzsmj12315的博客 116

关于tkinter的的布局管理pack()篇

pack() 1、pack函数布局的时候,默认先使用的放到上面,然后依次向下排列,默认方式它会给我们的组件一个自认为合适的位置和大小。 2、pack函数也可以接受几个参数,side参数,指定了它停靠在哪个方向,可以为LEFT,TOP,RIGHT,BOTTOM,分别代表左,上,右,下, 它的fill参数可以是X,Y,BOTH,NONE即在水平方向填充,竖直方向填充,水平和竖直方向填充和不填...

神鱼来啦的博客 3万+

Tkinter之pack所有属性详解

Tkinter的pack()方法记录 我理解的pack方法就是需要将容器如何放置在你的窗口上面,主要是相对位置的一个概念,而且最重要的是pack方法是按照代码执行顺序一行一行放置的,先后顺序对结果有很大影响。 首先pack()方法的属性有如下几个: -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady...

晒晒小木桩的博客 2万+

tkinter-pack布局详解

前面三篇博文介绍了 tkinter-label,tkinter-menu详解,tkinter-button详解,可以说对tkinter的控件有了基础的认识,可能这时大家自然会想,这些控件放置的什么位置要怎样控制呢?为了搞清楚这个问题,接下来分三篇博文来分别介绍tkinter的三种布局方法。 tkinter中控件的布局可以有三个类来控制,分别是Pack,Place,Grid.本系列文章将这三个类统称为布局类. 布局类与控件类的类间关系如下: 由上图可以看出,tkinter总共有17个控件类,三个布局类都是控

渔道的博客 1万+

TKinter之pack()

PythonGUI TKinter(一) 组件摆放-------->pack() 首先介绍最基本的框架,下面我们用三个简单的步骤来绘制一个最简单的窗口 1.导入tkinter库 2.创建主窗口对象 3.加入消息循环 # 1.导入tkinter库 import tkinter # 2.创建主窗口对象 root = tkinter.Tk() # 3.加入消息循环 root.mainlo...

Weary_PJ的博客 9587

tkinter的布局定位方法之一:pack详细讲解

pack参数说明   编写一个程序的界面,就是要把各个组件,以适当大小,定位到界面的某个位置。   tkinter以提供3种界面组件布局管理的方法,分别是:pack,grid,place 这篇文章先来讲解pack 方法。   pack() 方法的参数有:side, fill, padx/pady, ipadx/ipady, anchor, expand 参数说明: side: 决定组件停靠的方向。  选项:left, right, top, bottom  la1.pack( side...

hyf64的专栏 1万+
上一篇: Tkinter教程之Canvas篇(4)
下一篇: 'Tkinter教程之Place篇
jcodeer
博客等级 码龄22年 272粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值