如何巧妙运用Python的tkinter库中的PanedWindow面板实现复杂界面布局设计?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1313个文字,预计阅读时间需要6分钟。
目录 + PanedWindow的基本概念 + 插入子控件 + add()方法 + 建立LabelFrame + 创建子对象 + tkinter.ttk模块 + weight参数 + 在PanedWindow内插入不同控件 + 总结 + PanedWindow的基本概念 + PanedWindow可以翻译为面板,是一个用于分割窗口的控件 + 它允许用户通过拖动分割线来调整各部分的大小
目录
- PanedWindow的基本概念
- 插入子控件 add()
- 建立LabelFrame 当做子对象
- tkinter.ttk 模块的weight 参数
- 在PanedWindow 内插入不同的控件
- 总结
PanedWindow的基本概念
PanedWindow可以翻译为面板,是一个Widget 控件,可以在此容器内建立任意数量的子控件,不过一般在此控件内建立两三个子控件,而控件是以水平方向或垂直方向排列。
它的构造方法语法如下:
PanedWindow(父对象, options, ...)
参数:
- 第一个参数:父对象,表示这个面板将建立在哪一个窗口内
- 第二个参数:
options,参数如下
插入子控件 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()
运行结果:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。
本文共计1313个文字,预计阅读时间需要6分钟。
目录 + PanedWindow的基本概念 + 插入子控件 + add()方法 + 建立LabelFrame + 创建子对象 + tkinter.ttk模块 + weight参数 + 在PanedWindow内插入不同控件 + 总结 + PanedWindow的基本概念 + PanedWindow可以翻译为面板,是一个用于分割窗口的控件 + 它允许用户通过拖动分割线来调整各部分的大小
目录
- PanedWindow的基本概念
- 插入子控件 add()
- 建立LabelFrame 当做子对象
- tkinter.ttk 模块的weight 参数
- 在PanedWindow 内插入不同的控件
- 总结
PanedWindow的基本概念
PanedWindow可以翻译为面板,是一个Widget 控件,可以在此容器内建立任意数量的子控件,不过一般在此控件内建立两三个子控件,而控件是以水平方向或垂直方向排列。
它的构造方法语法如下:
PanedWindow(父对象, options, ...)
参数:
- 第一个参数:父对象,表示这个面板将建立在哪一个窗口内
- 第二个参数:
options,参数如下
插入子控件 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()
运行结果:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

