Tkinter教程之Pack篇

2023-05-16

''' 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个单位值的距离

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tkinter教程之Pack篇 的相关文章

  • 创建圆形图像 PIL Tkinter

    Currently I have a zoom feature in my application that works very well however I d like the actual zoom box to be a circ
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • Tkinter 框架滚动条

    我的目标是向其中有多个标签的框架添加一个垂直滚动条 一旦框架内的标签超过框架的高度 滚动条就会自动启用 经过一番搜索 我发现this https stackoverflow com questions 3085696 adding a sc
  • 如何在函数执行后停止 tkinter?

    我在停止 提要 时遇到问题 cancel 参数似乎对 after 方法没有任何影响 尽管 feed stop 被打印到控制台 我正在尝试使用一个按钮来启动源 另一个按钮来停止源 from Tkinter import Tk Button i
  • 用 tkinter 画圆更简单的方法?

    在a上画一个圆tkinter Canvas通常由create oval方法 然而 提供边界框通常是绘制圆的一种令人困惑的方式 想出一个捷径并不是特别困难 但我找不到其他人在做类似的事情 所以我将其发布 希望其他人发现它有用 这是一个称为猴子
  • 如何删除选择复选框后出现的 Python3 tkinter ttk.CheckButton 虚线?

    有没有什么方法可以删除使用 默认 主题时单击 ttk Checkbutton 对象的文本时出现的虚线轮廓 例子 from tkinter import from tkinter import ttk master Tk style ttk
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c
  • tkinter:为什么在“tk.call”方法中使用“self._w”来引用小部件而不是“self”?

    下面是一个tkinter ttk类提取自 usr lib python3 8 tkinter ttk py 我注意到在代码行中self tk call self w set value self w已使用且未使用self 这在整个源代码中都
  • tkinter 上的“NoneType”对象没有属性“get”错误[重复]

    这个问题在这里已经有答案了 我最近开始使用 python 3 6 进行编码tkinter并尝试创建我自己的项目repl it 该项目是一个简单的交互式待办事项列表 但是我陷入困境并且无法使该功能正常工作 该函数只是简单地获取条目并将其添加到
  • 在 GUI 中显示 DHT11 的温度 - 自动刷新?

    Python 新手 开始接触 DHT11 温度 湿度传感器 Raspberry Pi 3 和 Python 3 我正在使用标准Adafruit DHT11 库 https github com adafruit Adafruit Pytho
  • tkinter 中无法设置背景颜色

    我对这个简单的 tkinter 程序越来越绝望 我似乎无法更改背景颜色 或单个小部件的颜色 这里出了什么问题 以下是我的各种尝试以及收到的错误的要点 import tkinter import tkinter ttk as tk root
  • 如何使用 pyinstaller 包含文件?

    我也使用 tkinter 使用 python 3 7 编写了一个程序 由于我使用的是外部图片 因此当我将所有内容编译为一个 exe 时 我需要包含它们 我试过做 add data bg png files 但我仍然收到此错误 tkinter
  • Python Tkinter 在 GUI 中嵌入 Matplotlib

    我正在尝试将绘图嵌入到用 Python 编码的 Tkinter GUI 中 我相信下面的代码成功地将图形放入画布中 但我无法控制 GUI 网格中的画布位置 我希望能够将 GUI 的一部分作为情节 而不是全部 我怎样才能定位这个画布小部件 u
  • 按下按钮时有多个命令

    我想在单击按钮时运行多个功能 例如我希望我的按钮看起来像 self testButton Button self text test command func1 command func2 当我执行此语句时 我收到错误 因为我无法将某些内容
  • 如何使用 tkinter 使用网格功能显示不同的图像?

    我想使用显示文件夹中的图像grid 但是当我尝试使用以下代码时 我得到了迭代单个图像的输出 My code def messageWindow win Toplevel path C Users HP Desktop dataset for
  • 在 tkinter 和 python 中嵌套网格和框架

    我正在尝试在更大的网格结构中的框架内设置一个网格 我试图将其提炼为问题的最简单版本 from tkinter import Tk Frame Label Entry root Tk root geometry 800x800 frame1
  • 默认窗口颜色 Tkinter 和十六进制颜色代码

    我想知道当您简单创建一个窗口时 Tkinter 中的默认窗口颜色 root Tk 如果有的话 可以将小部件设置为相同的颜色或使用十六进制颜色代码吗 使用RGB 我找到的 正常 窗口的颜色代码是 R 240 G 240 B 237 Thank
  • Python 3.4.3 tkinter - 程序在声明 IntVar 或任何其他 tkinter 数据类型时冻结

    上一主题 Python 3 4 tkinter checkbutton变量处理不起作用 响应 https stackoverflow com questions 33711472 python 3 4 tkinter checkbutton
  • 在 while 循环中更改 tkinter 画布中的图像

    我的完整代码是here https gist github com ItsBerry de245ba70376cb07f4dbe2d25c223f5f 我正在尝试使用 tkinter 的画布创建一个小游戏 让人们练习学习高音谱号上的音符 最
  • 如何在 Tkinter 的 Button 小部件中创建多个标签?

    我想知道如何在 Tkinter 中创建具有多个标签的按钮小部件 如下图所示 带有子标签的按钮 https i stack imgur com jOZRw jpg正如您所看到的 在某些按钮中有一个子标签 例如按钮 X 有另一个小标签 A 我试

随机推荐

  • 程序员成神之路,一年挖坑,五年扛旗,十年成神

    自人类社会诞生以来 xff0c 等级就一直存在 xff0c 有人指点江山 xff0c 称之为 大神 有人卸瓦搬砖 xff0c 称之为 小白 在程序员的世界里 xff0c 等级同样森严 特别是在1年 5年 10年时会有大不同 据说到达上面每一
  • [安装fastfds中的nginx执行make命令报错]src/core/ngx_murmurhash.c:37:11: error

    问题 在nginx文件夹里执行make命令报错 src core ngx murmurhash c 37 11 error this statement may fall through Werror 61 implicit fallthr
  • 七牛云融合CDN到底怎么配置?

    人生如戏 xff0c 你得先有故事 老李 由于来年头一个月公司产品接入了一个旅游项目 xff0c 为了保证系统的稳定性 xff0c 必须要对现有架构进行改进以应对大流量的冲击 那么问题来了 xff1f 怎么改 xff1f 首先 xff0c
  • 【二、Arm平台直接安装QT】

    在目标开发平台空间资源不紧张的情况下 xff0c 可直接安装QT常规库 xff0c 省去交叉编译QT源码的时间 span class token function sudo span span class token function ap
  • ubuntu sudo apt-get update时执行失败应该怎么办

    命中 1 http security ubuntu com ubuntu focal security InRelease 命中 2 http us archive ubuntu com ubuntu focal InRelease 命中
  • 不吹不黑,逛GitHub没看过这10个开源项目,绝对血亏

    今天的分享 xff0c 也算是一次简单的复盘 xff0c 我们花了点时间梳理了一下 xff0c 以便诸位在空余时间可以研究学习 下面开始进入正题 xff1a 1 Build Your Own X GitHub Star xff1a 61 3
  • 快速精准的人头检测,代码已开源

    昨天arXiv一篇新上论文 FCHD A fast and accurate head detector xff0c 来自江森自控 xff08 Johnson Controls Inc xff09 的软件工程师Aditya Vora分享了一
  • UDP 用户数据报协议

    UDP 用户数据报协议 引言 UDP是一种保留消息边界 xff08 不合并 xff0c 不拆分 xff09 的简单的面向数据报的传输层协议 使用UDP协议的时候 xff0c 一般来说 xff0c 每个被应用程序请求的UDP输出操作只生产一个
  • 有新家了

    我在CSDN有个小窝了 我是一个JAVA初学者 虽然不是从事IT业 但对计算机有着浓厚的兴趣 希望在CSDN这个大家庭里 能得到朋友们的帮助 当然 我也会力所能及的帮助其它初学者解决一些简单问题的 以后我会把每天学习的内容 来这里发表一下
  • 动态绑定和多态

    class Animal private String name Animal String name this name 61 name public void enjoy System out println 34 叫声 34 clas
  • 离线安装gitlab

    1 下载跟Linux版本相关的 rpm包 地址 xff1a https packages gitlab com gitlab gitlab ce 2 将下载的rpm包上传到机器 3 解压 rpm ivh gitlab ce 15 6 2 c
  • windows子系统 WSL 的根目录位置

    根目录对应位置 我安装的子系统是 Ubuntu18 04 xff0c 根目录对应的位置是 xff1a C Users Administrator AppData Local Packages CanonicalGroupLimited Ub
  • 2020阿里云学生服务器操作步骤!

    前言 年龄在12岁 24岁之间的大陆个人实名认证用户 和 大陆全日制在校大学生在学生认证有效期内 xff0c 满足上述任一条件即可享受优惠价格 xff0c 同一用户只能保有一台学生优惠弹性计算产品 xff0c 一台数据库RDS产品 xff0
  • python用Selenium爬取携程网机票信息

    一 问题说明 1 selenium库是爬虫过程中比较讨巧的一个第三方库 xff0c 它能够跳过js ajax等交互 xff0c 上手比较容易 2 基础代码是根据其他博主参考而来 xff0c 但携程网站不断变化 xff0c 除ID等不变的信息
  • Docker---Docker-compose安装部署Samba服务

    Docker compose安装部署Samba服务 目录 Docker compose安装部署Samba服务一 环境准备二 创建docker compose yaml文件三 测试服务 一 环境准备 1 拉取samba镜像 xff1a doc
  • 金山词霸2005专业版序列号,绝对正确 JQ7M7-XCD38-834H2-TRTWJ-J7BG4

    金山词霸2005专业版序列号 xff0c 绝对正确 JQ7M7 XCD38 834H2 TRTWJ J7BG4
  • Java数据结构——用顺序表编写一个简易通讯录

    Java数据结构 用顺序表编写一个简易通讯录 1 定义线性表的抽象数据类型 xff08 接口 xff09 2 编写顺序表 xff08 类 xff09 3 编写测试程序 xff08 main方法所在的可运行类 xff09 Java数据结构 用
  • sprintf和snprintf用法

    1 sprintf 函数 sprintf 函数原型为 intsprintf char str const char format 其中的格式控制字符串与 printf 的格式控制字符串的作用是一样的 xff0c 表示的是参数的格式 xff0
  • 官网的订阅发布节点

    发布话题 1 usr bin env python 2 license removed for brevity 3 import rospy 4 from std msgs msg import String 5 6 def talker
  • Tkinter教程之Pack篇

    39 39 39 Tkinter教程之Pack篇 39 39 39 Pack为一布局管理器 xff0c 可将它视为一个弹性的容器 39 39 39 1 一个空的widget 39 39 39 不使用pack coding cp936 fro