python - AttributeError:“Checkbutton”对象没有“取消选择”属性
问题描述
我在从包含“0”和“1”的文本文件中加载复选框状态时遇到问题。
inside "test.txt" file :
1
0
1
0
这就是我期望的结果,“1”代表选中框,“0”代表未选中框
下面是我正在处理的代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry("180x90")
name1 = ["Mike", "Harry", "Siti", "Jenn"]
def loadstates():
f = open("test.txt", "r")
list_a = []
list_a = f.readlines()
return list_a
f.close()
def createCheckboxes():
for x, y in zip(st, name1):
check = ttk.Checkbutton(root, text=y, variable=x)
if x=='0':
check.select()
else:
check.deselect()
check.pack(anchor=tk.W)
st = loadstates()
createCheckboxes()
root.mainloop()
但它给出了错误:
回溯(最后一次调用):文件“C:/Users/jmamuham/PycharmProjects/LogBook/load_state.py”,第 24 行,在 createCheckboxes() 文件“C:/Users/jmamuham/PycharmProjects/LogBook/load_state.py”中,第 20 行,在 createCheckboxes check.deselect() AttributeError: 'Checkbutton' object has no attribute 'deselect'
知道为什么 .select() 和 .deselect() 给我这个错误吗?
顺便说一句,我是否使用正确的方法使用 1 和 0 重新填充复选框状态?
解决方案
还有比 select() 和 deselect() 更简单的方法!如果您将检查按钮正确链接到 tkinter int 或布尔变量,则检查按钮将自动检查和取消检查是否分别给出 1/True 或 0/False 值。就是这样:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry("180x90")
name1 = ["Mike", "Harry", "Siti", "Jenn"]
def loadstates():
f = open("test.txt", "r")
list_a = []
list_a = f.readlines()
f.close()
return [int(i) for i in list_a] # Make sure your values are integers, not strings
def createCheckboxes():
for value, y in zip(st, name1):
x = tk.IntVar() # This is a tkinter variable. BooleanVar() will also work here
x.set(value) # When modifying values of a tkinter variable, always use .set()
check = ttk.Checkbutton(root, text=y, variable=x)
check.var = x # Link the variable to the checkbutton so it isn't thrown out by garbage collection
check.pack(anchor=tk.W)
st = loadstates()
createCheckboxes()
root.mainloop()
推荐阅读
- node.js - .map() 中的嵌套异步函数无法在 .then() 块之前运行
- php - Wordpress 自定义帖子类型分页 - /page/2/ 未找到
- python - 将列表添加到组合
- c++ - 需要帮助编写一个函数来检查两个 BST 是否具有相同的结构
- vue.js - 更改 v-for 列表后如何重新渲染我的 vue 模板?
- algorithm - 运行最大流算法后,在流网络中找到所有处于某个最小切割中的边
- for-loop - WMIC lastmodified 包含在 for 循环中
- android - 如何检测某个库的使用位置/删除未使用的库
- html - 为什么新元素默认出现在页面顶部?
- c++ - 如何初始化静态输出参数