tkinter的Frame控件

news2024/11/24 20:36:06

文章目录

    • Frame和LabelFrame控件
    • Frame参数
    • LabelFrame参数

tkinter系列:

  • GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框
  • Frame控件💎PanedWindow和notebook控件
  • 扫雷小游戏💎强行表白神器

Frame和LabelFrame控件

对于一个稍微复杂的软件,界面上肯定会划分多个功能区,每个功能区内部又有一些子功能区,如果直接用按钮在窗口中乱排,那么软件的设计逻辑就比较脑残。而为了实现这种套娃模式,tkinter提供了Frame控件,简单地说,Frame就是一个可以容纳控件的容器,有了这个,就可以窗口中套着大Frame,大Frame套小Frame这样套下去。

import tkinter as tk

win = tk.Tk()
for i in range(3):
    frm = tk.Frame(win)
    frm.pack(side=tk.LEFT, expand=tk.YES, fill=tk.Y)
    for j in range(3):
        btn = tk.Button(frm, text=f"{i,j}", width=10)
        btn.pack(side=tk.TOP,expand=tk.YES,fill=tk.X)

win.mainloop()

效果如下

在这里插入图片描述

当然,从感官上来说,上面的这种布局结构其实看不太出来应用了Frame组件。相比之下,LabelFrame就稍有特点。将上述绘图代码中的tk.Frame(win)改为tk.LabelFrame(win, text=f"第{i}列"),就可以得到下图

在这里插入图片描述

Frame参数

由于LabelFrame比Frame多了个标题,所以比Frame更复杂,简单起见,先介绍Frame的参数。一般Frame支持的参数,LabelFrame都支持。

首先,height和width用来设置宽度和高度;padx和pady用于设置水平和垂直方向上的边距。下面的表中给出了一些有关Frame边框的配色设置

选项含义
background/bg设置背景颜色,默认值由系统指定
borderwidth/bd指定的边框宽度,默认2像素
takefocus设为True时,可接受输入焦点,默认False
highlightbackground未获得焦点的时候高亮边框的颜色
highlightcolor获得焦点的时候高亮边框的颜色
highlightthickness指定高亮边框的宽度,默认1或2像素

下面设置一下背景色和边框

import tkinter as tk

def showFrames(frms):
    for i, frm in enumerate(frms):
        frm.pack(side=tk.LEFT, expand=tk.YES, fill=tk.Y)
        for j in range(3):
            btn = tk.Button(frm, text=f"{i,j}", width=10)
            btn.pack(side=tk.TOP,expand=tk.YES,fill=tk.X)

win = tk.Tk()
frms = [tk.Frame(win, bg='LightPink', bd=bd, takefocus=True,
    highlightbackground="gray", 
    highlightcolor="red",
    highlightthickness=bd,
    ) for bd in (2, 5, 10)]
showFrames(frms)
win.mainloop()

效果如下,当按下tab键时,可以看到被选中的Frame边框变红

在这里插入图片描述

LabelFrame参数

LabelFrame比Frame多了标题,相应多出来的参数基本都是有关文字设置的。

选项含义
text指定本,可以包含换行符
font文本字体
foreground/fg文本颜色
labelanchor文本显示位置,默认"nw"
labelwidget指定一个组件替代text

其中,labelanchor可选位置有"n", “ne”, “e”, “se”, “s”, “sw”, “w”, “nw”, 或 “center”,其ewsn代表东西南北,上北下南左西右东。

下面设置一下

win = tk.Tk()
frms = [tk.LabelFrame(win, text=lc, labelanchor=lc, bd=5, 
    fg='green', takefocus=True, highlightbackground="gray", 
    highlightcolor="red") for lc in ("nw", "s", "ne")]
showFrames(frms)
win.mainloop()

效果如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S系列二:实战入门

I. 配置kubectl 1.1 什么是kubectl? 官方文档中介绍kubectl是: Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数–kubeconfig来指定其他…

Android布局【LinearLayout】

文章目录 常见属性orientation的选择项解释项目结构主要代码 常见属性 orientation:布局中组件的排列方式gravity:控制组件所包含的子元素的对齐方式,可多个组合layout_gravity:控制该组件在父容器里的对齐方式background&#x…

Verdi_如何dump信号的驱动强度

Verdi_如何dump信号的驱动强度 需求背景 在Verilog语法标准中,0和1各自被分成了8个强度等级; Strength NameStrength NameStrength Levelsupply 0supply 17strong 0strong 16pull 0pull 15large 0large 14weak 0weak 13medium 0medium 12small 0small…

k8s 自身原理 5

我们知道容器是通过 pod 来承载的,我们在 k8s 中,服务都是跑在 pod 里面的,pod 里面可以跑 1 个容器,或者跑多个容器,那么咱们 pod 里面跑 1 个服务容器,咱真的就以为里面就只有这样个容器吗? …

替代阿托斯DLKZOR-T/DLHZO-TES直动式伺服阀比例阀

DLKZOR-T/DLKZOR-TES直动式伺服阀比例阀结构: 1,LVDT传感器 2,比例电磁铁 3,阀体 4,阀套 5,阀芯 6,复位弹簧 7,集成数字放大器 8,七芯插头 9,RS232通…

Python学习笔记_基础篇(二)_数据类型之字符串

一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list 列表用[] 元祖:tuple 元祖用() 字典:dict 注:所有的数据类型都存在想对应…

synchronized锁膨胀、锁升级、锁优化的过程

参考文章 Java中的偏向锁,轻量级锁, 重量级锁解析_萧萧九宸的博客-CSDN博客 本文是本人对以上文章的整理,建议先去看以上文章。 在Java中,一个锁对象的四种状态: 无锁偏向锁轻量级锁重量级锁 在Java中,一个锁就是一…

推断统计方法(假设检验)

统计方法除了描述统计方法之外还有推断统计,推断统计包括参数估计和假设检验,假设检验的概念就是先假设后检验,运用的是数学上的反证法;假设检验是利用样本数据提供的信息,对未知总体分布的某些方面(如总体…

STM32F103C8T6蓝牙OTA教程

一、准备与简介 1. 准备材料 文章使用的软硬件并不局限,下述仅作参考,文章的所有使用的工程可在文末获取(百度网盘Github) 1)STM32F103C8T6核心板 2)下载器(PWLINK) 3&#xff0…

Vscode 常用操作教程

一、语言换成中文 这是我们可以直接点击左边栏第四个图标搜索插件 chinese ,也可以直接ctrlshiftp快捷键也会出来如图所示图标,出来chinese 插件之后选择安装install,安装完成之后重新ctrlshiftp会出现如图所示页面 找到我的鼠标在的地方对应的中文,此时…

【工作中问题解决实践 十二】使用@JsonTypeInfo实现请求数据对象多态

最近在处理接口请求进行数据写入的一个case时,我希望上游只使用我一个写入接口去实现不同类型的数据写入,而上游的数据写入Model是各不相同的,这就要求我接口的一个对象可以应对上游不同类型对象的写入请求。关于Jackson的概念不再赘述&#…

SQL进阶--SQL的常用技巧

一、ORDER BY FIELD() 自定义排序逻辑 排序 ORDER BY 除了可以用 ASC 和 DESC,还可以通过**ORDER BY FIELD(str,str1,...)**自定义字符串/数字来实现排序。这里用 order_diy 表举例,结构以及表数据展示: 二、CASE 表达式 「case when then el…

UI设计师个人工作感悟5篇

UI设计师个人工作感悟一 工作一年了,结合我自身谈谈UI设计的重要性。现在主流的论坛建站程序有两种 Phpwind 和Discuz(Phpwind被阿里巴巴收购 Discuz被腾讯收购这两个论坛程序都是开源免费的),利用这两种程序我都分别建立过论坛,我第一次用的…

7-15 然后是几点

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时…

高效解决在pycharm环境下的UserWarning: loaded more than 1 DLL from .libs这类问题

文章目录 问题解决方案Plan APlan B 解决! 问题 这说明因同时存在多个动态链接库而存在冲突,所以需要删除其中一个 解决方案 Plan A Plan B 如果Plan A没用,就重装numpy,因为这个库就是numpy的 pip uninstall numpy pip insta…

zabbix-6.4 监控 MySQL

目录 1、rpm安装zabbix_agentd服务 2、编写zabbix_agentd.conf文件 3、编写模板文件 4、创建mysql用户并赋权限 5、创建.my.cnf文件 6、将规则添加到SELinux策略中 注意: 若模板无法读取.my.cnf 信息,从而导致监控报错,可以尝试修改模…

使用Python将文本转换为语音的简易应用

正文: 在本篇博客中,我们将介绍如何使用Python编写一个简单的应用程序,将文本转换为语音。我们将使用pyttsx3库进行文本到语音的转换,并通过pygame库来播放生成的语音。 C:\pythoncode\new\text2speech.py 首先,我们…

ReentrantReadWriteLock

关于读写锁状态的存取 // ReentrantReadWriteLock.Sync static final int SHARED_SHIFT 16; static final int SHARED_UNIT (1 << SHARED_SHIFT); static final int MAX_COUNT (1 << SHARED_SHIFT) - 1; static final int EXCLUSIVE_MASK (1 <&l…

小白到运维工程师自学之路 第七十三集 (kubernetes应用部署)

一、安装部署 1、以Deployment YAML方式创建Nginx服务 这个yaml文件在网上可以下载 cat nginx-deployment.yaml apiVersion: apps/v1 #apiVersion是当前配置格式的版本 kind: Deployment #kind是要创建的资源类型&#xff0c;这里是Deploymnet metadata: #metadata是该资源…

快手商品详情数据API 抓取快手商品价格、销量、库存、sku信息

快手商品详情数据API是用来获取快手商品详情页数据的接口&#xff0c;请求参数为商品ID&#xff0c;这是每个商品唯一性的标识。返回参数有商品标题、商品标题、商品简介、价格、掌柜昵称、库存、宝贝链接、宝贝图片、商品SKU等。 接口名称&#xff1a;item_get 公共参数 名…