今日我們要學習的是之前學到的Entry輸入框延伸內容:
多行輸入框及列表選擇框。
那就趕快開始吧!
Text在tkinter內也是輸入框的一種,
而與Entry不同的是。
Entry為單行輸入框,
而Text則為多行輸入框。
我們執行後可以看見,
輸入框內可以輸入多行文字。
我們可以運用Text在應用中,
接下來,
我們使用多行輸入框,
並新增按鈕,使用者按下按鈕後,可以將其輸入內容新增至視窗中,
按下清除按鈕則全部清除。
在這裡,
我們使用到了StringVar,
他可以設定一個字串變數,
我們設定其預設值為空白。
接著我們寫一個submit方法,
我們將字串變數的內容設定為抓取Text中的內容。
其中,1.0的表示為,
1代表第一行,
0代表第一個字元的位置(從每一行的開頭位置開始計算)。
而end-1c則表示取得倒數第二個字元 (因為最後一個字元是換行符,需去掉)。
我們再寫一個clear方法,
當這個方法被運行時,
我們的字串變數需要清空,
Text則用delete方法將輸入框裡的內容全數清空。
(因換行符也需清空,所以使用end)
最後將兩項方法設定到呼應到按鈕即可。
執行後,
當我們輸入多行文字並按下Submit按鈕時,
我們輸入的內容就會被貼在視窗中。
按下Clear按鈕後,所有內容就會被清除。
Listbox的中文為列表選擇框,
它可以在一個框內設立多項列表,
當我們要設立選項時,
需要用到 insert() 方法,將選項插入Listbox中。
下圖為運行結果。
如果遇到選項太多,
想要簡化程式碼時,
我們也可以創建list列表,
並使用for迴圈將其輸出,
或是使用StringVar,
這裡我們就以list的方式。
當遇到選項太多而超過Listbox大小時,
我們可以設定滾動條在其中。
而撰寫這項應用時,
我們首先要了解Frame和Scrollbar。
(1)Frame
Frame是可以用來放置其他元件的「框架」,
我們可以將它視為設立一個小視窗,且可以設立多個,
它可以讓我們彈性的配置各種元件。
這裡我們就設置一個Frame以便後續使用。
(2)Scrollbar
Scrollbar是滾動條/捲軸,
它可以與其他元件搭配。
當某個元件的內容高度過長要捲動時,
我們就可以使用Scrollbar,讓使用者進行捲動瀏覽。
這裡我們設置一個Scrollbar,把它放在Frame裡面,
並且我們設置這個捲動條的初始位置在Frame的右側,
使用fill將捲動條在Frame中垂直填滿。
補充 : fill可填入之參數
NONE:保留自然大小。
X:沿X軸方向擴展填滿,但高度保持不變。(水平填滿)
Y:沿Y軸方向擴展填滿,但寬度保持不變。(垂直填滿)
BOTH:同時在水平和垂直方向上填滿。(沿 X 軸和 Y 軸都擴展)
最後是設定Listbox的部分,
我們要將Listbox設定在Frame內,
並設立Listbox的位置及填充方式。
然後我們使用yscrollcommand,將Listbox加入垂直捲軸,
記得使用set將我們剛才建立的滾動條設定進去。
接著,我們使用yview方法,
控制Listbox中的內容根據滾動條的位置進行垂直滾動。
如此一來,
我們就將滾動條與Listbox列表框聯繫起來,
當我們拖動滾動條時,列表框的內容也會垂直滾動。
我們運行程式碼,
就能看見右方出現了滾動條,
我們下拉時,
Listbox中的選項也會向下移動。
以上是今日的學習,
今天學習了很多新知識,
在加入滾動條的時候,很多程式碼都是沒有見過的,
但最後透過網路,我學會了那些程式碼,並成功運用出來了!
參考資料:
https://steam.oxxostudio.tw/category/python/tkinter/listbox.html