Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python Tkinter-从多个复选框中获取值_Python 2.7_Variables_For Loop_Checkbox_Tkinter - Fatal编程技术网

Python 2.7 Python Tkinter-从多个复选框中获取值

Python 2.7 Python Tkinter-从多个复选框中获取值,python-2.7,variables,for-loop,checkbox,tkinter,Python 2.7,Variables,For Loop,Checkbox,Tkinter,我正在创建一个Tkinter应用程序,尝试从多个复选框中获取值。我能够创建复选框,但无法检索值。选中或未选中复选框 要求: 我需要遍历所有复选框变量来识别选中的变量 import openpyxl import sys import pandas as pd from Tkinter import * import ttk import tkFont reload(sys) sys.setdefaultencoding('utf8') top = Tk() notebook = ttk.N

我正在创建一个Tkinter应用程序,尝试从多个复选框中获取值。我能够创建复选框,但无法检索值。选中或未选中复选框

要求:

我需要遍历所有复选框变量来识别选中的变量

import openpyxl
import sys
import pandas as pd
from Tkinter import *
import ttk
import tkFont


reload(sys)
sys.setdefaultencoding('utf8')

top = Tk()
notebook = ttk.Notebook(top)
notebook.grid(row=1, column=0, columnspan=1, sticky=W)
frame1 = ttk.Frame(top)
notebook.add(frame1, text='TAB1')
s = ttk.Style()
s.theme_use('clam')
helv36 = tkFont.Font(family='Helvetica', size=12, weight=tkFont.BOLD)

wb = openpyxl.load_workbook('File',data_only=True)
ws = wb['Sheet1']

mylist = []
mylist1 = []
for col in ws['A']:
     mylist.append(col.value)
for col in ws['B']:
    mylist1.append(col.value)

mylist = [str(item) for item in mylist]
mylist1 = [str(item) for item in mylist1]

i=2
for name in mylist:
    Label(frame1, text="col1",
          borderwidth=1,font=helv36).grid(row=1)
    Label(frame1, text=name,
                  borderwidth=1).grid(row=i)
    i +=1


i =2
for name in mylist1:
    Label(frame1, text="col2",
          borderwidth=1,font=helv36).grid(row=1, column=1)
    Label(frame1, text=name,
          borderwidth=1).grid(row=i,column=1)
    val = IntVar()
    val = "v" + str(i)
    c_val = Checkbutton(frame1, variable=val)
    c_val.grid(row=i, column=2,sticky = W)
    i +=1


***def chkbox_checked():
    #Need to loop to get checked checkboxes***


B200 = Button(frame1, text ="Check", command = chkbox_checked,font=helv36, bg='orange')
B200.grid(row=100)
top.mainloop()

您可以将BooleanVar与复选框关联并获取值。然后可以使用set()方法设置复选框的默认值,并使用get()获取复选框的状态。例如:

import tkinter as tk
root=tk.Tk()
c=tk.BooleanVar()
tk.Checkbutton(root,variable=c,command=lambda: print(c.get())).pack()
root.mainloop()
如果要循环多个复选框,可以执行以下操作:

import tkinter as tk
root=tk.Tk()

c1=tk.BooleanVar()
c2=tk.BooleanVar()
c3=tk.BooleanVar()
c4=tk.BooleanVar()

def get_value():
    for c in (c1,c2,c3,c4):
        print(c.get())

tk.Checkbutton(root,text='checkbox1',variable=c1,).pack()
tk.Checkbutton(root,text='checkbox2',variable=c2,).pack()
tk.Checkbutton(root,text='checkbox3',variable=c3,).pack()
tk.Checkbutton(root,text='checkbox4',variable=c4,).pack()
tk.Button(root,text='get value',command=get_value).pack()

root.mainloop()

你已经提出了要求,但还没有提出问题。您需要帮助解决方案的哪一部分?我需要获取选中的复选框的变量