python tkinter中的Frame控件用法详解

 更新时间:2023年08月15日 10:36:04   作者:微小冷  
Tkinter中的Frame控件是一个用于组织和管理其他控件的容器,它可以将其他控件放置在自己内部,用于创建更复杂的用户界面,要创建一个Frame控件,可以使用Tkinter的Frame类,所以本文就通过一个简单的示例给大家介绍一下

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()

效果如下

在这里插入图片描述

到此这篇关于python tkinter中的Frame控件用法详解的文章就介绍到这了,更多相关python tkinter Frame控件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Pygame实现落球游戏详解

    Python Pygame实现落球游戏详解

    本文主要介绍了利用Pygame实现落球小游戏,即屏幕上落下一个球,通过鼠标移动,地下的木块如果接上则加分,否则就减去一命,三条命用完则游戏结束。感兴趣的可以学习
    2022-01-01
  • 解决启动django,浏览器显示“服务器拒绝访问”的问题

    解决启动django,浏览器显示“服务器拒绝访问”的问题

    这篇文章主要介绍了解决启动django,浏览器显示“服务器拒绝访问”的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python 进程 进程池 进程间通信实现解析

    python 进程 进程池 进程间通信实现解析

    这篇文章主要介绍了python 进程 进程池 进程间通信实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python基于均值漂移算法和分水岭算法实现图像分割

    Python基于均值漂移算法和分水岭算法实现图像分割

    图像分割是将图像分成若干具有独特性质的区域并提取感兴趣目标的技术和过程。这篇文章将详细讲解基于均值漂移算法和分水岭算法的图像分割,需要的可以参考一下
    2023-01-01
  • Python中for循环控制语句用法实例

    Python中for循环控制语句用法实例

    这篇文章主要介绍了Python中for循环控制语句用法,较为详细的分析了for循环语句的原理与相关使用技巧,需要的朋友可以参考下
    2015-06-06
  • TensorFlow获取加载模型中的全部张量名称代码

    TensorFlow获取加载模型中的全部张量名称代码

    今天小编就为大家分享一篇TensorFlow获取加载模型中的全部张量名称代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python 如何把classification_report输出到csv文件

    python 如何把classification_report输出到csv文件

    这篇文章主要介绍了python 把classification_report输出到csv文件的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • java直接调用python脚本的例子

    java直接调用python脚本的例子

    有时需求使用JAVA直接调用python脚本,执行一些服务器监控的事情。 本文给出一个java直接调用python脚本的例子
    2014-02-02
  • Python实现读取PDF中的文本,图片与文档属性

    Python实现读取PDF中的文本,图片与文档属性

    PDF格式因其版式固定、内容稳定而被广泛使用,本文将介绍如何用Python实现PDF文本读取,图片提取以及文档属性读取 三大核心操作,适用于信息抽取,电子档案处理等场景,有需要的可以了解下
    2025-06-06
  • python实现图片转字符小工具

    python实现图片转字符小工具

    这篇文章主要为大家详细介绍了python实现图片转字符小工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04

最新评论