python - Python打印复选框值
问题描述
我正在尝试打印我选择的复选框的值。有人可以帮我指出正确的方向吗?我在这一行遇到错误 - print(my_items[item])
这是错误:
TypeError:列表索引必须是整数或切片,而不是 IntVar
import tkinter as tk
from tkinter import *
top = tk.Tk()
top.wm_title("Checklist")
my_items = ['pizza','breadsticks','wings','CocaCola','brownie']
check_boxes = {item:IntVar() for item in my_items}
def confirm():
for item in check_boxes.values():
if item.get() == 1:
print(my_items[item])
for item in my_items:
CB = Checkbutton(top, text = item, variable = check_boxes[item], anchor = W, onvalue = 1, offvalue = 0, height=1, width = 50)
CB.pack()
B1 = tk.Button(top, text = "confirm", command = confirm)
B1.pack()
top.mainloop()
解决方案
如果您创建了像
check_boxes = {'pizza': IntVar(), ...}
那么你应该使用keys
and values
from dictionary
在你得到你需要的key
文本'pizza'
def confirm():
for key, item in check_boxes.items():
if item.get() == 1:
print(key)
import tkinter as tk
# from tkinter import * # PEP8: `import *` is not preferred
# --- functions ---
def confirm():
for key, item in check_boxes.items():
if item.get() == 1:
print(key)
# --- main ---
my_items = ['pizza', 'breadsticks', 'wings', 'CocaCola', 'brownie']
root = tk.Tk()
check_boxes = {item:tk.IntVar() for item in my_items}
for item in my_items:
cb = tk.Checkbutton(root, text=item, variable=check_boxes[item], anchor='w', onvalue=1, offvalue=0, width=50)
cb.pack()
b1 = tk.Button(root, text="confirm", command=confirm) # PEP8: without spaces around `=`, `lower_case_names` for variables
b1.pack()
root.mainloop()
顺便说一句:您也可以使用StringVar()
和onvalue='pizza'
import tkinter as tk
# --- functions ---
def confirm():
for string_var in check_boxes:
text = string_var.get()
if text:
print(text)
# --- main ---
my_items = ['pizza', 'breadsticks', 'wings', 'CocaCola', 'brownie']
root = tk.Tk()
check_boxes = []
for item in my_items:
string_var = tk.StringVar()
check_boxes.append(string_var)
cb = tk.Checkbutton(root, text=item, variable=string_var, anchor='w', onvalue=item, offvalue='', width=50)
cb.pack()
b1 = tk.Button(root, text="confirm", command=confirm)
b1.pack()
root.mainloop()
推荐阅读
- routes - TurfJS 吸附到第二近的位置
- php - Typo3 - 流体 - 内容标题输出
- python - wxPython:更改按钮图像
- android - 带有菜单和地图片段的主要活动(Android 应用)
- reactjs - 将图像文件上传到 AWS S3 React JS
- javascript - putFile 不是函数
- ios - 如果我正在实施 Firebase 身份验证,是否必须将 iOS 应用数据存储在远程服务器上?
- php - 验证文件找不到表单数据
- java - 如何将这些系统输出中的每一个存储在 if else 语句中到一个解决方案字符串中
- laravel - 雄辩 where 条件 AND(条件 OR 条件 OR 条件)