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实现.dcm格式图像转为.jpg格式

    利用python实现.dcm格式图像转为.jpg格式

    今天小编就为大家分享一篇利用python实现.dcm格式图像转为.jpg格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 亲手教你用Python打造一款摸鱼倒计时界面

    亲手教你用Python打造一款摸鱼倒计时界面

    前段时间在微博看到一段摸鱼人的倒计时模板,感觉很有意思,于是我用了一个小时的时间写一个页面出来,下面小编把实现过程分享给大家,对Python摸鱼倒计时界面感兴趣的朋友一起看看吧
    2021-12-12
  • Python搭建代理IP池实现获取IP的方法

    Python搭建代理IP池实现获取IP的方法

    这篇文章主要介绍了Python搭建代理IP池实现获取IP的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • python中__init__()方法详情

    python中__init__()方法详情

    这篇文章主要介绍了 python中__init__()方法详情,python类中定义的函数称为方法, init ()方法本质也是一个函数。这个函数的作用是初始化实例后的对象,具体内容请参考下文详细内容
    2021-11-11
  • 详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)

    详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)

    这篇文章主要介绍了详解利用OpenCV提取图像中的矩形区域(PPT屏幕等),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • Python中循环依赖问题及其解决方案

    Python中循环依赖问题及其解决方案

    在软件开发中,循环依赖是一个常见的问题,尤其是在使用 Python 这样的动态语言时,循环依赖指的是两个或多个模块或组件相互依赖,形成一个闭环,本文将探讨 Python 中循环依赖的问题,并提供一些解决方案,需要的朋友可以参考下
    2024-06-06
  • Python字符串的全排列算法实例详解

    Python字符串的全排列算法实例详解

    这篇文章主要介绍了Python字符串的全排列算法,结合实例形式较为详细的总结分析了Python字符串全排列的常见操作技巧,需要的朋友可以参考下
    2019-01-01
  • pytorch 批次遍历数据集打印数据的例子

    pytorch 批次遍历数据集打印数据的例子

    今天小编就为大家分享一篇pytorch 批次遍历数据集打印数据的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python if语句知识点用法总结

    Python if语句知识点用法总结

    本篇文章给python初学者总结了关于Python之if语句的相关用法以及知识点总结,跟着学习下吧。
    2018-06-06
  • 这可能是最好玩的python GUI入门实例(推荐)

    这可能是最好玩的python GUI入门实例(推荐)

    这篇文章主要介绍了这可能是最好玩的python GUI入门实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论