iT邦幫忙

2021 iThome 鐵人賽

DAY 17
1
自我挑戰組

一起用python寫UI系列 第 17

Day17 用python寫UI-聊聊Listbox基本操作

  • 分享至 

  • xImage
  •  

Listbox表單是可以顯示很多選項的空件,一次可以執行一個或多個。

語法:Listbox( master, option, ... )

♠♣今天的文章大綱♥♦

  • 表單基本參數
  • insert()
  • Listbox控見的操作

表單基本參數

參數 說明
bg 標籤背景或 indicator 的背景顏色。
borderwidth或bd 3D邊界寬度,預設是2px。
cursor 當滑鼠游標在選項紐時的外形。
fg 文字的顏色。
font 字型。
height 高,設是 10。
selectbackground 被選取字串的背景色彩。
highlightthickness 當表單取得焦點時的厚度。
highlightcolor 當表單取得焦點時的顏色。
listvariable 以變數方式處理選項內容。
relief 預設是FLAT,可由此更改邊界外觀。
ycrollcommand y軸使用捲軸。
xcrollcommand x軸使用卷軸。
width 選項紐的文字區間有幾個字元寛,省略時會自行調整為實際寬度。
參數 說明
selectmode 可以決定有多少選項可以被選,和滑鼠拖曳如何影響選項。
BROWSE 預設,選擇一個選項,同時拖曳滑鼠,最後的位置是被選取的項目位置。
SINGLE 只能選擇一個選項,用點選方式選取,不可用拖曳方式更改所選的項目。
MULTIPLE 可以選擇多個選項,點選項目可以切換是否選擇該項目。
EXTENDED 可以一次使用點選第一個項目然後拖曳到最後一個項目,即可選擇這區間的系列選項。點選可以選擇第一個項目,此時若是按 Shift+ 點選另一個項目,可以選取區間項目。

insert()

insert()是建立表單項目。
語法:insert(index,elements)

import tkinter as tk

root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x200')

exercises = ["Badminton", "baseball", "basketball"," football",
            " handball"," hockey"," table tennis"," tennis"," volleyball"]

lb = tk.Listbox(root,selectmode='extended')

for exercise in exercises:
    lb.insert ('end', exercise)
lb.pack(pady=10)

root.mainloop()

執行結果⬇⬇⬇
按住shift就可以選取多個選項。
https://ithelp.ithome.com.tw/upload/images/20211002/201400479abj0Rv9e3.png


Listbox控見的操作

參數 說明
size() 傳回列表項目的數量。
selection_set() 選取特定索引項目。
delete() 刪除特定索引項目。
get() 傳回特定索引項目。
curselection() 傳回選取項目的索引。
selection_include() 傳回特定索引是否被選取。

size()範例
用上一個範例的程式碼加上一行

for exercise in exercises:
    lb.insert ('end', exercise)
lb.pack(pady=10)
print("列出數量",lb.size())#在python shell印出數量

執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211002/20140047zBuuAg8rqv.png

curselection()

import tkinter as tk

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x250')

def callback():
    indexs = lb.curselection()
    for index in indexs:
        print(lb.get(index))

exercises = ["Badminton", "baseball", "basketball"," football",
            " handball"," hockey"," table tennis"," tennis"," volleyball"]

lb = tk.Listbox (root, selectmode='multiple')
for exercise in exercises:
    lb.insert ('end', exercise)
lb.pack(pady=10)

b = tk.Button (root, text="Print", command=callback)
b.pack (pady = 5)

root.mainloop()

執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211002/20140047Mv3d9UaEMT.png
把選取的印出來。
https://ithelp.ithome.com.tw/upload/images/20211002/201400479ZxXkX3dDR.png


今天的文章就到這邊,selectmode有很多種不同的方式,可以自己試試看喔~
/images/emoticon/emoticon07.gif


上一篇
Day16 用python寫UI-聊聊Binding events
下一篇
Day18 用python寫UI-聊聊Listbox與事件綁定
系列文
一起用python寫UI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言