iT邦幫忙

0

python 有關tkinter的疑問

  • 分享至 

  • xImage

import tkinter
from tkinter import messagebox

def showMsg():
i = radio_v.get()
messagebox.showinfo('選取結果', '您最想去的國家為: '+country[i])

win = tkinter.Tk()
win.title('最想要旅遊的國家調查')
win.geometry('300x150')
label = tkinter.Label(win, text='請選取你想要去的國家: ').pack()
country = {0: '土耳其', 1: '英國', 2: '日本', 3: '埃及'}
radio_v = tkinter.IntVar()
radio_v.set(0)
for i in range(len(country)):
tkinter.Radiobutton(win, text=country[i],variable=radio_v,value=i).pack()
tkinter.Button(win, text='確定', command=showMsg).pack()
win.mainloop()

想請教一下,這個範例中當按下其中一個選項按鈕時,variable會有怎樣的變化,跟value有關係嗎? 還有為什麼Checkbutton沒有像Radiobutton一樣有value這個參數呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
lion_inin
iT邦新手 1 級 ‧ 2021-08-05 14:08:51

你按第一個國家,他抓到的是1 ^3^

Radiobutton 因為他可能有很多值,依你題目,他有4個國家(0-3)

checkbutton 永遠只有兩個值,true 或 false。

但其實兩者都有value這個參數,只是名稱不同而已。

checkbutton的value 稱為chkValue

這個文章給您參考

看更多先前的回應...收起先前的回應...
joyang iT邦新手 5 級 ‧ 2021-08-05 15:28:00 檢舉

請問i不是從0開始?

lion_inin iT邦新手 1 級 ‧ 2021-08-05 15:38:56 檢舉

他 i 的範圍是country的長度呀[len(country)],應該是從1開始吧 ?

你可以用 print(i) 出來看看,我錯了跟我說。 ^3^

joyang iT邦新手 5 級 ‧ 2021-08-05 15:48:47 檢舉

https://ithelp.ithome.com.tw/upload/images/20210805/20138757DKZoMfWFtD.png

joyang iT邦新手 5 級 ‧ 2021-08-05 15:49:12 檢舉

從0印到3的樣子

lion_inin iT邦新手 1 級 ‧ 2021-08-05 16:58:30 檢舉

了解 ^^

0
japhenchen
iT邦超人 1 級 ‧ 2021-08-05 14:42:03

checkbox只有單一變數,要嘛True不然False

chkValue = tk.BooleanVar()  #布林
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)
 

RadioBox是一個變數多個選項(看你放幾個),就不會是只有True/False,就看選在那一項就是哪一個value了

tk.Radiobutton(master, text="One", variable=v, value=1).pack(anchor="w")
tk.Radiobutton(master, text="Two", variable=v, value=2).pack(anchor="w")
tk.Radiobutton(master, text="Three", variable=v, value=3).pack(anchor="w")
看更多先前的回應...收起先前的回應...
joyang iT邦新手 5 級 ‧ 2021-08-05 15:26:03 檢舉

所以請問是按哪個選項 variable就會接到那個選項的value值嗎

每一個RadioButton都會有一個特定的value...我舉的例就有3個值

joyang iT邦新手 5 級 ‧ 2021-08-05 15:35:15 檢舉

照您舉的例子,像如果點選 "one" , variable就會接收到 1
是這樣嗎?

後面的value=多少就是多少,如果是字串就是字串(那variable要改成 StringVar)

joyang iT邦新手 5 級 ‧ 2021-08-05 16:19:29 檢舉

好的謝謝您!

我要發表回答

立即登入回答