#

窗格視窗(panedwindow)是一種可以做出分割頁面效果的視窗元件,本篇文件說明這種視窗元件的使用方法。

33.1 建立窗格視窗

窗格視窗的使用方法和分頁框(notebook)很類似,一樣要先用ttk::panedwindow命令建立元件,然後再用add命令放入視窗元件。下面是一個建立窗格視窗的例子,這個例子建立了一個水平擺放的窗格視窗,然後分別放了兩個treeview元件在裡面,程式碼如下:



使用的方法和分頁框幾乎一樣,只是顯示的方法不一樣,請看下方的圖片,窗格視窗會水平的排放兩個treeview,而且兩個treeview的中間有一個可以調整窗格大小的直線(sash)。

圖 33-1


注意哦!!窗格視窗和分頁框一樣有兩個地方要小心。第一,凡是放在窗格裡的視窗元件,儘可能以窗格視窗的path或是Root視窗作為父親,否則在某些情況下放在窗格裡的視窗元件可能會顯示不出來。例如上一個範例窗格1的path是.pw.tv1,它就是以窗格視窗的path也就是.pw做為父親。第二,被加入窗格的視窗元件的path可以當做窗格的ID,以上面的例子來看窗格1的ID就是.pw.tv1,往後如果要刪除或是設定窗格1都要以.pw.tv1做為依據。

當然也可以建立垂直排放的窗格視窗,例如:



圖 33-2


請試試看調整上一個例子中Root視窗的大小,你應該會發現只有窗格3會跟著調整高度,如果你想要三個窗格一起改變,可以在add命令的後面指定-weight選項,這個選項可以用一個整數值來當做縮放的比重,例如:



這樣子三個treeview縮放的比重都設定為1,所以縮放Root視窗時它們會平圴分配Root視窗的高度。

就如同分頁框一樣,窗格視窗除了可以使用add命令來建立窗格之外,也可以使用insert命令,兩者不同的是insert可以指定新窗格的顯示位置。如果把上一個範例的



改成



這樣的話窗格3就會顯示在最上面。

圖 33-3


insert命令後面的位置必需是一個0以上的整數,或是使用end來表示最後一個位置。

33.2 刪除窗格

如果你想要刪除某一個窗格,可以使用窗格視窗的forget命令,例如想要把上一個例子裡的窗格3由窗格視窗中移除可以這樣:



這樣的話窗格3就會被移除,注意哦!!這個forget命令會移除放置在窗格裡的視窗元件,但不會銷毀它,所以.pw.tv3並不會被destroy,你還是要自己銷毀它,像這樣:



33.3 其它窗格視窗的命令

窗格視窗的pane命令可以用來調整指定窗格的選項,目前可以用的選項只有縮放比重-weight,例如想要改變窗格2的比重可以這樣:



窗格視窗的sashpos命令可以用來取得或是調整兩個窗格間的sash位置,也就是說這個命令可以讓你用程式去改變兩個窗格間sash的位置,而不需要用滑鼠操作。例如:



上面的程式片段會把目前3個窗格間的sash位置列印出來。如果要調第1及2個窗格間的sash可以這樣:




33.3 其它窗格視窗的選項

以下是其它常用的選項,有興趣的朋友請自己試看看吧!!

-height指定窗格視窗的高度
-width指定窗格視窗的寬度。

窗格視窗也提供了cget及configure等標準的視窗元件命令,它們的用法請參考這一章的說明。

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates