我正在制作一個程式,它為用戶提供了一個可供選擇的復選框。復選框是通過回圈自動創建的。我能夠檢測到哪些復選框已被勾選,但以后我無法自己更改特定復選框的狀態。具體來說,我想在單擊按鈕后從勾選的復選框中洗掉所有勾號,但更一般地說,我想知道如何更改單個復選框的狀態。這是一個示例代碼:
import tkinter
from tkinter import *
tagsValue = {'Beef': 0, 'Fish': 0, 'Chicken': 0, 'Pork': 0, 'Lamb': 0, 'Egg': 0, 'Ham': 0}
def execute():
my_text.delete('1.0', END)
for tag in tagsValue:
if tagsValue[tag].get() == '1':
my_text.insert(INSERT, ('\n' tag))
root = Tk()
root.title('User Selection')
root.geometry("300x300")
my_button = Button(root, text ="Submit",command = execute)
my_text = Text(root)
for tag in list(tagsValue):
tagsValue[tag] = Variable()
l = Checkbutton(root,justify=LEFT,width=8, text=tag, variable=tagsValue[tag])
l.deselect()
l.pack()
my_button.pack()
my_text.pack()
root.mainloop()
我曾嘗試使用類似tagsValue['Ham'] = '0'和tagsValue['Ham'] = 0之前的東西,root.mainloop()但這些都不起作用。我知道['state']用于更改復選框的狀態,但由于我的復選框未命名,因此我無法使用它。(我不能單獨命名復選框,因為我有很多很多復選框)。那么如何更改復選框的狀態呢?
uj5u.com熱心網友回復:
在 for 回圈之后, 的所有值都tagsValue將是 的實體Variable。因此,您可以使用,例如,tagsValue['Ham'].set('0')更改Ham.
如果要使用按鈕清除所有刻度,請執行以下操作:
def clear():
for var in tagsValue.values():
var.set('0')
...
clear_button = Button(root, text='Clear', command=clear)
clear_button.pack()
...
正如@Bryan 在評論中所說,一般使用特定的StringVar或IntVar代替通用Variable的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364696.html
