正是問題所說的,我不知道為什么。基本上我的意圖是將所有復選按鈕初始化為未選中。這是我的代碼:
import tkinter as tk
from tkinter import ttk
class Checkbuttons():
def __init__(self,parent,list_of_values,column,row,**kwargs):
#Converts list into dictionary
self.values = {}
for value in list_of_values:
self.values[value] = tk.IntVar()
column_counter = column
row_counter = row
for tag in list(self.values):
print('{} : {}'.format(tag,self.values[tag].get())) #Test reveals IntVar is 0
Checkbutton(parent,tag,self.values[tag],column_counter,row_counter,width=15)
print('{} : {}'.format(tag,self.values[tag].get())) #Test reveals IntVar is 0
self.values[tag].set(0)
row_counter = 1
class Checkbutton(ttk.Checkbutton):
def __init__(self,parent,text,variable,column,row,search=True,**kwargs):
kwargs['text'] = text
kwargs['variable'] = variable
super().__init__(parent,**kwargs)
print(variable.get()) #IntVar is also zero here.
self.grid(column=column,row=row)
root = tk.Tk()
my_list = {'e-book epub','e-book PDF','Paperback','Hardcover','Audiobook MP3','Audible','Kindle'}
Checkbuttons(root,my_list,1,1)
root.mainloop()
非常感謝任何幫助,除非相關,否則請不要批評我的代碼的其他方面。
uj5u.com熱心網友回復:
問題是由以下行引起的:
Checkbuttons(root,my_list,1,1)
由于 的實體沒有變數參考Checkbuttons(),它將被垃圾收集(也是它的實體變數self.values)。
您需要使用變數來保存實體:
a = Checkbuttons(root,my_list,1,1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411590.html
標籤:
