翼度科技»论坛 编程开发 python 查看内容

Python之tkinter面板PanedWindow的使用

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
PanedWindow的基本概念

PanedWindow可以翻译为面板,是一个Widget 控件,可以在此容器内建立任意数量的子控件,不过一般在此控件内建立两三个子控件,而控件是以水平方向或垂直方向排列。
它的构造方法语法如下:
  1. PanedWindow(父对象, options, ...)
复制代码
参数:

  • 第一个参数:父对象,表示这个面板将建立在哪一个窗口内
  • 第二个参数:
    1. options
    复制代码
    ,参数如下
参数含义bg 或 background当鼠标光标不在此控件上时,若是有滚动条或方向盒时,滚动条或方向盒的背景色彩bd3D显示时的宽度默认是2borderwidth边界线宽度默认是2cursor当鼠标光标在标签上方时的形状handlepad面板显示宽度默认是8handlesize面板显示大小默认是8height高度没有默认高度opaqueresize该选项定义了用户调整窗格尺寸的操作如果该选项的值为 True(默认),窗格的尺寸随用户鼠标的拖拽而改变如果该选项的值为 False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置orient面板配置方向默认是HORIZONTALrelief可由此控制文字外框默认是relief=FLATsashcursor分割线光标,没有默认值sashpad设置每一条分割线到窗格间的间距sashrelief面板分隔线外框默认值是RAISEDsashwidth设置分割线的宽度showhandle滑块属性,可设定是否显示默认值为 Falsewidth面板整体宽度,没有默认值
插入子控件 add()
  1. add(child, options)
复制代码
可以插入子控件
例子:
  1. import tkinter
  2. panedWindow = tkinter.PanedWindow(orient=tkinter.VERTICAL)
  3. panedWindow.pack(fill=tkinter.BOTH, expand=True)
  4. # 创建标签Top
  5. top = tkinter.Label(panedWindow, text='Top')
  6. panedWindow.add(top)
  7. # 创建标签Bottom
  8. bottom = tkinter.Label(panedWindow, text='Bottom')
  9. panedWindow.add(bottom)
  10. panedWindow.mainloop()
复制代码
运行结果:

放大后


建立LabelFrame 当做子对象

PanedWindow 是一个面板,最常的应用是将它分成两三份,然后可以将所设计的控件适度分配位置。
例子:
  1. import tkinter
  2. root = tkinter.Tk()
  3. panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)
  4. panedWindow.pack(fill=tkinter.BOTH, expand=True)
  5. leftFrame = tkinter.LabelFrame(panedWindow, text='Left', width=120, height=150)
  6. panedWindow.add(leftFrame)
  7. centerFrame = tkinter.LabelFrame(panedWindow, text='Center', width=120, height=150)
  8. panedWindow.add(centerFrame)
  9. rightFrame = tkinter.LabelFrame(panedWindow, text='Right', width=120, height=150)
  10. panedWindow.add(rightFrame)
  11. panedWindow.mainloop()
复制代码
运行结果:


tkinter.ttk 模块的weight 参数

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

但是如果我们想要同比例缩放或放大呢?
我们可以在add()方法内使用weight参数,但是使用这个需要导入tkinter.ttk
例子:
  1. from tkinter import *
  2. from tkinter.ttk import *
  3. root = Tk()
  4. panedWindow = PanedWindow(orient=HORIZONTAL)
  5. panedWindow.pack(fill=BOTH, expand=True)
  6. leftFrame = LabelFrame(panedWindow, text='Left', width=120, height=150)
  7. panedWindow.add(leftFrame, weight=1)
  8. centerFrame = LabelFrame(panedWindow, text='Center', width=120, height=150)
  9. panedWindow.add(centerFrame, weight=1)
  10. rightFrame = LabelFrame(panedWindow, text='Right', width=120, height=150)
  11. panedWindow.add(rightFrame, weight=1)
  12. panedWindow.mainloop()
复制代码
运行结果:

如果三个子对象设置不同的 weight,更改窗口大小时,会产生不同的效果
例子:
  1. from tkinter import *
  2. from tkinter.ttk import *
  3. root = Tk()
  4. panedWindow = PanedWindow(orient=HORIZONTAL)
  5. panedWindow.pack(fill=BOTH, expand=True)
  6. leftFrame = LabelFrame(panedWindow, text='Left', width=120, height=150)
  7. panedWindow.add(leftFrame, weight=2)
  8. centerFrame = LabelFrame(panedWindow, text='Center', width=120, height=150)
  9. panedWindow.add(centerFrame, weight=2)
  10. rightFrame = LabelFrame(panedWindow, text='Right', width=120, height=150)
  11. panedWindow.add(rightFrame, weight=1)
  12. panedWindow.mainloop()
复制代码
运行结果:


在PanedWindow 内插入不同的控件

例子:
  1. import tkinter
  2. panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)
  3. panedWindow.pack(fill=tkinter.BOTH, expand=True)
  4. entry = tkinter.Entry(panedWindow, bd=3)
  5. panedWindow.add(entry)
  6. # 在panedWindow内创建PanedWindow子对象,名叫panedWindowIn
  7. panedWindowIn = tkinter.PanedWindow(panedWindow, orient=tkinter.VERTICAL)
  8. panedWindow.add(panedWindowIn)
  9. # 在panedWindowIn创建尺度条
  10. scale = tkinter.Scale(panedWindowIn, orient=tkinter.HORIZONTAL)
  11. panedWindowIn.add(scale)
  12. panedWindow.mainloop()
复制代码
运行结果:


总结

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

来源:https://www.jb51.net/article/283796.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具