2017-02-14 375 views
0

複数のチェックボックスから値を取得しようとするところでTkinterアプリケーションを作成しています。チェックボックスは作成できますが、値を取得することはできません。チェックボックスをオンまたはオフにします。Python 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() 
+0

あなたは要件を与えてくれたが、質問をしていません。解決策のどの部分に助けが必要ですか? –

+0

チェックされているチェックボックスの変数を取得する必要があります – jay

答えて

1

チェックボックスに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()