我创建了一个复选框栏。如何在每个复选框旁边添加输入框,如果复选框被禁用,则如何禁用输入框?
用于创建复选框的代码如下
#!/usr/bin/python3
import sys
from tkinter import *
from tkinter import filedialog
import tkinter.messagebox
import os
class Checkbar(Frame):
def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):
Frame.__init__(self, parent)
self.vars = []
for pick in picks:
var = IntVar(value=1)
chk = Checkbutton(self, text=pick, variable=var)
chk.pack(side=side, anchor=anchor, expand=YES)
self.vars.append(var)
def state(self):
return map((lambda var: var.get()), self.vars)
if __name__ == '__main__':
root = Tk()
root.title('Test')
lng = Checkbar(root, ['ASD', 'BSD', 'CSD'])
lng.grid(row=0, columnspan=6)
答案 0 :(得分:1)
在同一Entry
循环中创建for
小部件,并将它们与Checkbutton
关联。
class Checkbar(Frame):
def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):
Frame.__init__(self, parent)
self.vars = []
for pick in picks:
var = IntVar(value=1)
entry = Entry(self)
chk = Checkbutton(self, text=pick, variable=var, command=lambda v=var, e=entry: self.show_entry(v,e))
chk.pack(side=side, anchor=anchor, expand=YES)
entry.pack(side=side, anchor=anchor, expand=YES)
self.vars.append(var)
def show_entry(self, var, widget):
if var.get() == 0:
widget.configure(state='disabled')
else:
widget.configure(state='normal')