tkinter高級布局之PanedWindow和notebook詳解
tkinter傳統(tǒng)的布局工具就是Frame,頂多算上LabelFrame,然后運用place, grid和pack,來排滿一張窗口,其他的就沒有了。接下來要介紹的兩種布局控件,或者說是容器比較恰當,分別是可以動態(tài)劃分子控件的PanedWindow,和提供了選項卡工具的otebook,其中后者只存在于tkinter.ttk中。
PanedWindow
PanedWindow可以理解為是更加高級的窗口或者Frame,在PanedWindow中,其子控件可以自由拖動邊框。這個控件在tkinter和tkinter.ttk中都有,下面用ttk為示例
import tkinter as tk import tkinter.ttk as ttk pw = ttk.PanedWindow(orient='horizontal') pw.pack(fill="both", expand=1) pw.add(ttk.LabelFrame(pw, text="left")) pw.add(ttk.LabelFrame(pw, text="right")) tk.mainloop()
效果如下

在PaneWindow中,除了設置寬高的height, width,背景色bg,邊框寬度bd,鼠標樣式cursor,邊框樣式relief這些通用參數外,主要參數如下
| 參數 | |
|---|---|
| showhandle | 為True時顯示方形手柄 |
| handlepad | 手柄位置,默認8像素 |
| handlesize | 手柄邊長,默認8像素 |
| opaqueresize | 默認為True,窗格的尺寸隨用戶鼠標的拖拽而實時變化;如設為False,則只有在松開鼠標后,窗格尺寸才發(fā)生變化。 |
| orient | 窗格分布方式,可選 horizontal(橫向)和 vertical(縱向) |
| sashpad | 設置每一條分割線到窗格間的間距 |
| sashrelief | 分割線樣式,默認"flat",可選"sunken",“raised”,“groove” 或 “ridge” |
| sashwidth | 設置分割線的寬度 |
notebook
選項卡也是非常實用的布局利器,有了這個,可以讓窗口可以插入更多的內容,簡單示例如下
nt = ttk.Notebook() lf1 = ttk.LabelFrame(nt, text="選項卡1", labelanchor='n') nt.add(lf1, text='選項卡1') lf2 = ttk.LabelFrame(nt, text="選項卡2", labelanchor='n') nt.add(lf2, text='選項卡2') nt.pack(fill=tk.BOTH, expand=True) tk.mainloop()
效果如下

其中add函數可以添加新的選項卡,除了待添加控件之外,其主要參數如下
| 參數 | |
|---|---|
| text | 選項卡中標題 |
| compound | 當選項卡內同時含圖像和文字時,彼此之間的位置關系 |
| image | 選項卡以圖像方式呈現 |
| padding | 內邊距 |
| state | 選項卡狀態(tài),可選normal、disabled、hidden |
| sticky | 指出子窗口面板的配置方式,可選nsew,表示南北東西 |
| underline | 指出第幾個字母含下劃線,從0開始計算的索引 |
到此這篇關于tkinter高級布局之PanedWindow和notebook詳解的文章就介紹到這了,更多相關tkinter布局內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python timestamp和datetime之間轉換詳解
這篇文章主要為大家詳細介紹了python timestamp和datetime之間轉換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
利用Pycharm + Django搭建一個簡單Python Web項目的步驟
這篇文章主要介紹了利用Pycharm + Django搭建一個簡單Python Web項目的步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10

