Python之tkinter面板PanedWindow的使用

 更新时间:2023年05月09日 17:06:36   作者:qq_1471587327  
这篇文章主要介绍了Python之tkinter面板PanedWindow的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

PanedWindow的基本概念

PanedWindow可以翻译为面板,是一个Widget 控件,可以在此容器内建立任意数量的子控件,不过一般在此控件内建立两三个子控件,而控件是以水平方向或垂直方向排列。

它的构造方法语法如下:

PanedWindow(父对象, options, ...)

参数:

  • 第一个参数:父对象,表示这个面板将建立在哪一个窗口内
  • 第二个参数:options,参数如下
参数含义
bg 或 background当鼠标光标不在此控件上时,若是有滚动条或方向盒时,滚动条或方向盒的背景色彩
bd3D显示时的宽度默认是2
borderwidth边界线宽度默认是2
cursor当鼠标光标在标签上方时的形状
handlepad面板显示宽度默认是8
handlesize面板显示大小默认是8
height高度没有默认高度
opaqueresize该选项定义了用户调整窗格尺寸的操作如果该选项的值为 True(默认),窗格的尺寸随用户鼠标的拖拽而改变如果该选项的值为 False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置
orient面板配置方向默认是HORIZONTAL
relief可由此控制文字外框默认是relief=FLAT
sashcursor分割线光标,没有默认值
sashpad设置每一条分割线到窗格间的间距
sashrelief面板分隔线外框默认值是RAISED
sashwidth设置分割线的宽度
showhandle滑块属性,可设定是否显示默认值为 False
width面板整体宽度,没有默认值

插入子控件 add()

add(child, options)

可以插入子控件

例子:

import tkinter
panedWindow = tkinter.PanedWindow(orient=tkinter.VERTICAL)
panedWindow.pack(fill=tkinter.BOTH, expand=True)
# 创建标签Top
top = tkinter.Label(panedWindow, text='Top')
panedWindow.add(top)
# 创建标签Bottom
bottom = tkinter.Label(panedWindow, text='Bottom')
panedWindow.add(bottom)
panedWindow.mainloop()

运行结果:

放大后

建立LabelFrame 当做子对象

PanedWindow 是一个面板,最常的应用是将它分成两三份,然后可以将所设计的控件适度分配位置。

例子:

import tkinter
root = tkinter.Tk()
panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)
panedWindow.pack(fill=tkinter.BOTH, expand=True)
leftFrame = tkinter.LabelFrame(panedWindow, text='Left', width=120, height=150)
panedWindow.add(leftFrame)
centerFrame = tkinter.LabelFrame(panedWindow, text='Center', width=120, height=150)
panedWindow.add(centerFrame)
rightFrame = tkinter.LabelFrame(panedWindow, text='Right', width=120, height=150)
panedWindow.add(rightFrame)
panedWindow.mainloop()

运行结果:

tkinter.ttk 模块的weight 参数

如果我们单纯的根据上面的程序进行缩放,结果只有最右边一个变大或者变小

图片示例:

但是如果我们想要同比例缩放或放大呢?

我们可以在add()方法内使用weight参数,但是使用这个需要导入tkinter.ttk

例子:

from tkinter import *
from tkinter.ttk import *
root = Tk()
panedWindow = PanedWindow(orient=HORIZONTAL)
panedWindow.pack(fill=BOTH, expand=True)
leftFrame = LabelFrame(panedWindow, text='Left', width=120, height=150)
panedWindow.add(leftFrame, weight=1)
centerFrame = LabelFrame(panedWindow, text='Center', width=120, height=150)
panedWindow.add(centerFrame, weight=1)
rightFrame = LabelFrame(panedWindow, text='Right', width=120, height=150)
panedWindow.add(rightFrame, weight=1)
panedWindow.mainloop()

运行结果:

如果三个子对象设置不同的 weight,更改窗口大小时,会产生不同的效果

例子:

from tkinter import *
from tkinter.ttk import *
root = Tk()
panedWindow = PanedWindow(orient=HORIZONTAL)
panedWindow.pack(fill=BOTH, expand=True)
leftFrame = LabelFrame(panedWindow, text='Left', width=120, height=150)
panedWindow.add(leftFrame, weight=2)
centerFrame = LabelFrame(panedWindow, text='Center', width=120, height=150)
panedWindow.add(centerFrame, weight=2)
rightFrame = LabelFrame(panedWindow, text='Right', width=120, height=150)
panedWindow.add(rightFrame, weight=1)
panedWindow.mainloop()

运行结果:

在PanedWindow 内插入不同的控件

例子:

import tkinter
panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)
panedWindow.pack(fill=tkinter.BOTH, expand=True)
entry = tkinter.Entry(panedWindow, bd=3)
panedWindow.add(entry)
# 在panedWindow内创建PanedWindow子对象,名叫panedWindowIn
panedWindowIn = tkinter.PanedWindow(panedWindow, orient=tkinter.VERTICAL)
panedWindow.add(panedWindowIn)
# 在panedWindowIn创建尺度条
scale = tkinter.Scale(panedWindowIn, orient=tkinter.HORIZONTAL)
panedWindowIn.add(scale)
panedWindow.mainloop()

运行结果:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python实现俄罗斯方块游戏

    python实现俄罗斯方块游戏

    这篇文章主要为大家介绍了python实现俄罗斯方块游戏的详细代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • LyScript实现内存交换与差异对比的方法详解

    LyScript实现内存交换与差异对比的方法详解

    LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,需要的可以参考一下
    2022-08-08
  • Django后台admin的使用详解

    Django后台admin的使用详解

    这篇文章主要介绍了Django后台admin的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 解决python写入带有中文的字符到文件错误的问题

    解决python写入带有中文的字符到文件错误的问题

    今天小编就为大家分享一篇解决python写入带有中文的字符到文件错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python Pytorch深度学习之数据加载和处理

    Python Pytorch深度学习之数据加载和处理

    今天小编就为大家分享一篇Pytorch 数据加载与数据预处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-10-10
  • Python 实现微信防撤回功能

    Python 实现微信防撤回功能

    在微信上突然看到“XXX撤回一条消息”的时候,心里痒不痒?现在就教你如何使用python实现消息防撤回的功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
    2019-04-04
  • python如何将两个数据表中的对应数据相加

    python如何将两个数据表中的对应数据相加

    这篇文章主要介绍了python如何将两个数据表中的对应数据相加问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 关于Python turtle库使用时坐标的确定方法

    关于Python turtle库使用时坐标的确定方法

    这篇文章主要介绍了关于Python turtle库使用时坐标的确定方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 利用Python+Excel制作一个视频下载器

    利用Python+Excel制作一个视频下载器

    说起Excel,那绝对是数据处理领域王者般的存在。而作为网红语言Python,在数据领域也是被广泛使用。本文将利用Python和Excel制作一个视频下载器,需要的可以参考一下
    2022-05-05
  • python判断单向链表是否包括环,若包含则计算环入口的节点实例分析

    python判断单向链表是否包括环,若包含则计算环入口的节点实例分析

    这篇文章主要介绍了python判断单向链表是否包括环,若包含则计算环入口的节点,结合实例形式分析了Python针对单向链表的遍历、判断相关算法原理与使用技巧,需要的朋友可以参考下
    2019-10-10

最新评论