Python打印复选框值

2024-04-26 00:03:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打印所选复选框的值。有人能帮我指出正确的方向吗?我在这一行收到一个错误-打印(我的\u项目[项目])

这就是错误:

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()

Tags: 项目inimportfortkintermytopcheck
1条回答
网友
1楼 · 发布于 2024-04-26 00:03:12

如果你创建了字典,就像

check_boxes  = {'pizza': IntVar(), ...}

然后您应该使用字典中的keysvalues

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()

相关问题 更多 >