Python-80-Tkinter套件-Checkbutton元件(復選)

  • Checkbutton
  • 請選擇你的興趣
  • 1.聽音樂 2.打球 3.看電視
  • 使用者選擇後即在下方顯示
  • 您的興趣為: 使用者選的興趣列出來

先放介面

import tkinter as tk

yrwin=tk.Tk()

msglabel=tk.StringVar()

mylabel=tk.Label(yrwin,text="請選擇您的興趣:")
mylabel.pack()

mychkbtn=tk.Checkbutton(yrwin,text="聽音樂",variable=0)
mychkbtn.pack()

mychkbtn=tk.Checkbutton(yrwin,text="打球",variable=1)
mychkbtn.pack()

mychkbtn=tk.Checkbutton(yrwin,text="看電視",variable=2)
mychkbtn.pack()


mylabel=tk.Label(yrwin,textvariable=msglabel)
mylabel.pack()



yrwin.mainloop()

使用for迴圈寫法

import tkinter as tk

yrwin=tk.Tk()

ch=[]
like=["聽音樂","打球","看電視"]
msglabel=tk.StringVar()

mylabel=tk.Label(yrwin,text="請選擇您的興趣:")
mylabel.pack()

for i in range(0,len(like)):
    num=tk.IntVar() #每次都會產生動態不一樣的值
    print(num) 
    ch.append(num) #加到ch 陣列中
   
    mychkbtn=tk.Checkbutton(yrwin,text=like[i],variable=ch[i])
    mychkbtn.pack()

mylabel=tk.Label(yrwin,textvariable=msglabel)
mylabel.pack()

yrwin.mainloop()

完整程式碼:

def myshowmsg():
    global ch,like
    showmsg = "您的興趣為:"
    for i in range(0,len(ch)):
        if(ch[i].get()==True):#如果使用者有點選時
            showmsg=showmsg+like[i]+","
    
    msglabel.set(showmsg)


import tkinter as tk

yrwin=tk.Tk()

ch=[]
like=["聽音樂","打球","看電視"]
msglabel=tk.StringVar()

mylabel=tk.Label(yrwin,text="請選擇您的興趣:")
mylabel.pack()

for i in range(0,len(like)):
    num=tk.IntVar()
    print(num)
    ch.append(num)
   
    mychkbtn=tk.Checkbutton(yrwin,text=like[i],variable=ch[i],command=myshowmsg)
    mychkbtn.pack()

mylabel=tk.Label(yrwin,textvariable=msglabel)
mylabel.pack()



yrwin.mainloop()

參考

Yiru@Studio - 關於我 - 意如