網站首頁 編程語言 正文
?正文如下:
import tkinter as tk
windows = tk.Tk()
windows.title('復選框')
lab = tk.Label(windows, text='請選擇你喜歡做的事', fg='blue', bg='lightblue', width=35)
lab.grid(row=0, pady=2)
var_b = tk.IntVar()
print(var_b.get())
check_button_b = tk.Checkbutton(windows, text='打籃球', variable=var_b)
check_button_b.grid(row=2)
var_c = tk.IntVar()
print(var_c.get())
check_button_c = tk.Checkbutton(windows, text='打豆豆', variable=var_c)
check_button_c.grid(row=3)
tk.mainloop()
上述代碼中我們都能看到 IntVar()整形變量,默認值是 0 ,默認顯示的復選框是未勾選狀態 。
當然你不用這個變量也行,Checkbutton是有默認值的,默認值也是?0?,復選框同樣也是未勾選狀態 。
check_button_a = tk.Checkbutton(windows, text='看電影')
check_button_a.grid(row=1)
check_button_b = tk.Checkbutton(windows, text='打籃球')
check_button_b.grid(row=2)
tk.mainloop()
但是當我們使用StringVar()字符串變量,運行后復選框不僅默認選中了,而且復選框上還出現了一層灰色遮罩
var_b = tk.StringVar()
check_button_b = tk.Checkbutton(windows, text='打籃球', variable=var_b)
check_button_b.grid(row=2)
var_c = tk.StringVar()
check_button_c = tk.Checkbutton(windows, text='打豆豆', variable=var_c)
check_button_c.grid(row=3)
tk.mainloop()
個人理解的:因為StringVar()是字符串變量,它的默認值是這樣的 “?' '?”。這樣就導致了Checkbutton中variable接收的是 1,運行成功后,顯示的也是選中狀態了。
?DoubleVar()浮點數變量和BooleanVar()布爾變量也是可以正常使用的
var_b = tk.DoubleVar()
print(var_b.get())
check_button_b = tk.Checkbutton(windows, text='打籃球', variable=var_b)
check_button_b.grid(row=2)
var_c = tk.BooleanVar()
print(var_c.get())
check_button_c = tk.Checkbutton(windows, text='打豆豆', variable=var_c)
check_button_c.grid(row=3)
tk.mainloop()
var_b = tk.DoubleVar() # 浮點型變量,默認值為 0.0
var_c = tk.BooleanVar() # 布爾型變量,默認值為 False
var_d = tk.IntVar() # 整形變量,默認值為 0
var_e = tk.StringVar() # 字符串變量,默認值為 ''
F:\virtualEnvironment\venv\Scripts\python.exe F:/git/test-python/tkinterGui/tkinterExampleCheckButton.py
0.0
False
0
Process finished with exit code 0
當遇到多個選項,又需要存儲的時候,就用上了字典和for循環操作,在用字典存值
import tkinter as tk
windows = tk.Tk()
windows.title('復選框')
lab = tk.Label(windows, text='請選擇你喜歡做的事', fg='blue', bg='lightblue', width=35)
lab.grid(row=0, pady=2)
def print_info():
a = ''
for j in select_all:
if select_all[j].get() == True:
a = a + enjoyment[j] + '\t'
print(a)
enjoyment = {0: "打籃球", 1: "踢足球", 2: "看電影", 3: "打豆豆", 4: "演 講", 5: "擼代碼"}
select_all = {}
for i in range(len(enjoyment)):
select_all[i] = tk.BooleanVar()
tk.Checkbutton(windows, text=enjoyment[i], variable=select_all[i]).grid(row=i+1)
btn = tk.Button(windows, text='確定', command=print_info).grid(pady=2)
tk.mainloop()
點擊 “?確定 ” 按鈕,控制臺就會打印為們獲取的值,如下展示效果
F:\virtualEnvironment\venv\Scripts\python.exe F:/git/test-python/tkinterGui/tkinterExampleCheckButton.py
打籃球?? ?踢足球?? ?看電影?? ?
Process finished with exit code 0
原文鏈接:https://blog.csdn.net/LIFENG0402/article/details/113951032
相關推薦
- 2023-01-04 利用Python對哥德巴赫猜想進行檢驗和推理_python
- 2023-01-05 Presenting?Streams?in?Flutter小技巧_Android
- 2022-07-25 C#爬蟲基礎之HttpClient獲取HTTP請求與響應_C#教程
- 2023-02-02 C語言中的直接插入排序(帶圖詳細)_C 語言
- 2023-08-13 fastadmin框架中如何添加一個自定義按鈕
- 2022-07-14 C語言深入探索之單鏈表與typedef的用法_C 語言
- 2022-09-24 VisualStudio?制作Dynamic?Link?Library動態鏈接庫文件的詳細過程_C
- 2023-04-08 react中實現拖拽排序react-dnd功能_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支