目录
  • PanedWindow的基本概念
    • 插入子控件 add()
    • 建立LabelFrame 当做子对象
    • tkinter.ttk 模块的weight 参数
  • 在PanedWindow 内插入不同的控件
    • 总结

      PanedWindow的基本概念

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

      它的构造方法语法如下:

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

      参数:

      • 第一个参数:父对象,表示这个面板将建立在哪一个窗口内
      • 第二个参数:options,参数如下
      参数 含义
      bg 或 background 当鼠标光标不在此控件上时,若是有滚动条或方向盒时,滚动条或方向盒的背景色彩
      bd 3D显示时的宽度默认是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()

      运行结果:

      Python之tkinter面板PanedWindow的使用

      放大后

      Python之tkinter面板PanedWindow的使用

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

      运行结果:

      Python之tkinter面板PanedWindow的使用

      tkinter.ttk 模块的weight 参数

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

      图片示例:

      Python之tkinter面板PanedWindow的使用

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

      我们可以在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()

      运行结果:

      Python之tkinter面板PanedWindow的使用

      如果三个子对象设置不同的 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()

      运行结果:

      Python之tkinter面板PanedWindow的使用

      在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之tkinter面板PanedWindow的使用

      总结

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

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。