python - 获取复选框tkinter值的问题
问题描述
我正在尝试获取 tkinter 中复选框的值,以便我可以将这些复选框中的数据导出到 Excel 电子表格中
我试过让复选框迭代生成(就像它们现在一样)并手动制作它们,但无论我做什么,都无法让它们给我它们的值(无论它们是否被选中),这真的让我感到压力出去。
def check():
for movie in movies():
print(button.get())
Button(moviewindow,text="Check",command=check).pack(anchor=S)
for movie in movies():
var1 = IntVar()
button = Checkbutton(moviewindow,
bg=moviewindow_bg,
font=("Times",23),
onvalue=1,
offvalue=0,
text=movie.replace("<strong>","").replace("</strong>",""),
variable=var1).pack(anchor=W)
我希望代码打印 1 或 0,但我无法让复选框返回它们的值。
解决方案
您需要将变量(可能还有按钮)存储在某处。目前正在发生的事情是这样的:
您创建一个Button
运行该功能的check
。在内部check
,您遍历电影,并尝试从button
. 您应该从中获得价值var1
,但这不是这里的主要问题。主要问题是var1
它只包含最后IntVar
创建的,所以循环只会重复你创建的最后一个复选框的值。
在不知道对象movie
是什么类型的情况下,很难说在这里进行的最佳方式。如果movie
是一个类对象,你也许可以改变它的属性。如果它是一个可散列的对象,这就是你可以做的。
在您的代码上方的某处:为电影和变量之间的关联创建一个字典
checkbox_vars = {}
修复check
以使用此字典
def check():
for movie in movies():
print(checkbox_vars[movie].get())
在您的循环中,将变量存储在 dict
var1 = IntVar()
# Store the variable in checkbox_vars, for this specific movie
checkbox_vars[movie] = var1
这仍然是一种不太优雅的方式,但它应该说明您需要如何在button
/var1
和您movie
自己之间实际创建关联,而不是隐含的。
推荐阅读
- java - 通过 TCP 的 C# 到 Java UTF8 字符串
- javascript - 使用 react-router-dom 时出现无效的 Websockets 帧错误。我没有使用 websocket
- python - UpdateView 和防止用户编辑其他用户的内容
- python - 我无法在 python 中正确输出颜色文本
- arm - 无法获取ADC值并将其放入数组STM32F103C8T6
- javascript - 反应选择选项值改变变量数据
- typescript - 解决了一个类型问题,但不明白到底做了什么
- python - Django Polls App:背景图像未加载
- reactjs - React to React typescript迁移问题(useContext, useReducer)
- react-native - React Native Expo 应用程序如何从通知中注销