Python之tkinter 面板 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()

運行結果:
在這裏插入圖片描述
放大後

在這裏插入圖片描述

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

運行結果:
在這裏插入圖片描述

謝謝觀看,筆者會持續更新,如有錯誤或者建議,請私信我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章