nav分隔線 nav分隔線

利用Python做出單選題和複選題,並符合使用者圖形化UI介面

icon_fb icon_twitter icon_google
利用Python做出單選題和複選題,並符合使用者圖形化UI介面

文、意如老師

 

 

看完本文你可以學到:

1. 製作表單中的單選題radiobutton

2. 製作表單中的複選題checkbutton

 

 

完成檔:

 

 

 

 

 

 

任務一:製作表單中的單選題radiobutton

 

程式碼解析:

#功能:設定文字

def mymsg():

    msgfood.set("您最喜歡的主食為")

 

#匯入tkinter取別名為tk

import tkinter as tk

 

#建立視窗

yrwin = tk.Tk()

 

#設定變數字串

msgfood=tk.StringVar()

 

#設定標籤

foodlabel=tk.Label(yrwin,text="請選擇你最喜歡的主食")

foodlabel.pack()#將標籤加入視窗

 

#建立單選按鈕

ch01=tk.Radiobutton(yrwin,text="飯",value="飯")

ch01.pack()#將單選按鈕加入視窗

 

ch02=tk.Radiobutton(yrwin,text="麵",value="麵")

ch02.pack()#將單選按鈕加入視窗

 

#建立標籤文字顯示使用者選擇的項目

msglabel=tk.Label(yrwin,textvariable=msgfood,fg="blue")

msglabel.pack()#將標籤加入視窗

 

#呼叫方法:設定標籤文字

mymsg()

 

#點選時更新視窗

yrwin.mainloop()

 

 

 

Radiobutton抓取值的變數名稱需使用 variable設定

例:

ch01=tk.Radiobutton(yrwin,text="飯",value="飯",variable=choosefood,command=mymsg)

ch01.pack()

抓值時,使用

choosefood.get()

 

預設選項:

ch02.select() #預設選擇(一定要設定看是預設選飯還是選麵)

 

 

 

完整程式碼:

def mymsg():

    msgfood.set("您最喜歡的主食為"+choosefood.get()) #抓值

 

import tkinter as tk

 

yrwin = tk.Tk()

 

choosefood=tk.StringVar()

msgfood=tk.StringVar()

 

foodlabel=tk.Label(yrwin,text="請選擇你最喜歡的主食")

foodlabel.pack()

 

ch01=tk.Radiobutton(yrwin,text="飯",value="1",variable=choosefood,command=mymsg)

ch01.pack()

 

ch02=tk.Radiobutton(yrwin,text="麵",value="2",variable=choosefood,command=mymsg)

ch02.pack()

 

msglabel=tk.Label(yrwin,textvariable=msgfood,fg="blue")

msglabel.pack()

 

ch02.select()

mymsg()

yrwin.mainloop()

 

 

📖 延伸閱讀:【Python GUI教學】製作標籤Label、按鈕Button、文字Text元件

 

 

任務二:製作表單中的複選題checkbutton

 

 

程式碼解析:

首先把介面建立出來

#匯入tkinter取別名為tk

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 迴圈來建立

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()

 

📖 延伸閱讀:用Python的Tkinter套件製作簡單易用的計數器應用程式

 

 

 

 

FB粉絲團:https://www.facebook.com/lccnetzone
YouTube頻道:https://www.youtube.com/user/LccnetTaiwan

痞客邦Blog:http://lccnetvip.pixnet.net/blog

本網站使用相關網站技術以確保使用者獲得最佳體驗,通過使用我們的網站,您確認並同意本網站的隱私權政策。欲了解詳情,請參閱 隱私權政策