def __init__(self, parent, title="", optional = False, opt_func = None, *args, **options):
Frame.__init__(self, parent, *args, **options)
self.expanded = IntVar()
self.expanded.set(0)
self.enabled = IntVar()
self.enabled.set(1)
self.header = ttk.Frame(self)
if optional:
title_line = ttk.Checkbutton(self.header, text=title, variable=self.enabled, command=opt_func)
else:
title_line = ttk.Label(self.header, text=" %s" % (title))
title_line.pack(side="top", fill=X)
self.toggle_button = ttk.Checkbutton(self.header, width=2, text='+',
command=self.toggle_expanded, variable=self.expanded, style='Toolbutton')
self.toggle_button.pack(side="left", fill=X)
self.header.pack(fill=X, expand=1)
self.sub_frame = Frame(self)
python类Checkbutton()的实例源码
def test_invoke(self):
success = []
def cb_test():
success.append(1)
return "cb test called"
cbtn = ttk.Checkbutton(self.root, command=cb_test)
# the variable automatically created by ttk.Checkbutton is actually
# undefined till we invoke the Checkbutton
self.assertEqual(cbtn.state(), ('alternate', ))
self.assertRaises(tkinter.TclError, cbtn.tk.globalgetvar,
cbtn['variable'])
res = cbtn.invoke()
self.assertEqual(res, "cb test called")
self.assertEqual(cbtn['onvalue'],
cbtn.tk.globalgetvar(cbtn['variable']))
self.assertTrue(success)
cbtn['command'] = ''
res = cbtn.invoke()
self.assertFalse(str(res))
self.assertLessEqual(len(success), 1)
self.assertEqual(cbtn['offvalue'],
cbtn.tk.globalgetvar(cbtn['variable']))
def _setup_widgets(self):
themes_lbl = ttk.Label(self, text="Themes")
themes = self.style.theme_names()
self.themes_combo = ttk.Combobox(self, values=themes, state="readonly")
self.themes_combo.set(themes[0])
self.themes_combo.bind("<<ComboboxSelected>>", self._theme_sel_changed)
change_btn = ttk.Button(self, text='Change Theme',
command=self._change_theme)
theme_change_checkbtn = ttk.Checkbutton(self,
text="Change themes when combobox item is activated",
variable=self.theme_autochange)
themes_lbl.grid(ipadx=6, sticky="w")
self.themes_combo.grid(row=0, column=1, padx=6, sticky="ew")
change_btn.grid(row=0, column=2, padx=6, sticky="e")
theme_change_checkbtn.grid(row=1, columnspan=3, sticky="w", pady=6)
top = self.winfo_toplevel()
top.rowconfigure(0, weight=1)
top.columnconfigure(0, weight=1)
self.columnconfigure(1, weight=1)
self.grid(row=0, column=0, sticky="nsew", columnspan=3, rowspan=2)
def test_invoke(self):
success = []
def cb_test():
success.append(1)
return "cb test called"
cbtn = ttk.Checkbutton(self.root, command=cb_test)
# the variable automatically created by ttk.Checkbutton is actually
# undefined till we invoke the Checkbutton
self.assertEqual(cbtn.state(), ('alternate', ))
self.assertRaises(tkinter.TclError, cbtn.tk.globalgetvar,
cbtn['variable'])
res = cbtn.invoke()
self.assertEqual(res, "cb test called")
self.assertEqual(cbtn['onvalue'],
cbtn.tk.globalgetvar(cbtn['variable']))
self.assertTrue(success)
cbtn['command'] = ''
res = cbtn.invoke()
self.assertFalse(str(res))
self.assertLessEqual(len(success), 1)
self.assertEqual(cbtn['offvalue'],
cbtn.tk.globalgetvar(cbtn['variable']))
def test_invoke(self):
success = []
def cb_test():
success.append(1)
return "cb test called"
cbtn = ttk.Checkbutton(command=cb_test)
# the variable automatically created by ttk.Checkbutton is actually
# undefined till we invoke the Checkbutton
self.assertEqual(cbtn.state(), ('alternate', ))
self.assertRaises(Tkinter.TclError, cbtn.tk.globalgetvar,
cbtn['variable'])
res = cbtn.invoke()
self.assertEqual(res, "cb test called")
self.assertEqual(cbtn['onvalue'],
cbtn.tk.globalgetvar(cbtn['variable']))
self.assertTrue(success)
cbtn['command'] = ''
res = cbtn.invoke()
self.assertEqual(res, '')
self.assertFalse(len(success) > 1)
self.assertEqual(cbtn['offvalue'],
cbtn.tk.globalgetvar(cbtn['variable']))
def __init__(self, parent, buttontext, mycommand,r,c):
ttk.Checkbutton.__init__(self, parent)
self.var = BooleanVar()
self.config(text=buttontext, onvalue= True , variable = self.var, offvalue = False, command=mycommand)
self.grid(row=r,column=c)
def frame1_sync(self):
if not self.frame1.first_run:
self.frame1.sync.forget()
self.frame1.sync = ttk.Frame(self.frame1, borderwidth = 0)
self.frame1.sync.place(width = 170, height = 25, relx = 0.35, y = 55, anchor = "nw")
if self.solver_name.get() in [ "CPSO", "PSO", "DE" ]:
# sync
sync_button = ttk.Checkbutton(self.frame1.sync, text = "Synchronize",
variable = self.sync, takefocus = False)
# Layout
sync_button.place(relx = 0, x =0, y = 0, anchor = "nw")
def create(self, **kwargs):
return ttk.Checkbutton(self.root, **kwargs)
def create(self, **kwargs):
return ttk.Checkbutton(self.root, **kwargs)
def __init__ (self, root):
self.root = root
root.title ("Course Page Downlaoder")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
self.mainframe = mainframe
ttk.Label(mainframe, text="Registration Number").grid(row=0, column=0)
self.regno = StringVar()
self.pwd = StringVar()
self.cache = IntVar()
self.cache.set(1)
self.progress = IntVar()
self.progress.set(0)
self.hint = StringVar()
print "mama here"
self.hint.set("Hit Download or Return to Proceed")
self.regno_entry = ttk.Entry(self.mainframe, width=60, textvariable=self.regno)
self.regno_entry.grid(column=0, row=1, sticky=(E))
self.pwd_label = ttk.Label(self.mainframe, text="Password").grid(row=2, column=0)
self.pwd_entry = ttk.Entry(self.mainframe, width=60, show='*', textvariable=self.pwd)
self.pwd_entry.grid(column=0, row=3, sticky=(E))
self.cb = ttk.Checkbutton(self.mainframe, text="Remember Me", variable = self.cache)
self.cb.grid(column=0, row=4)
self.dlbutton = ttk.Button(self.mainframe, text="Download", command= lambda: self.calculate())
self.dlbutton.grid(column = 0, row=5)
for child in self.mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
self.hint_label = ttk.Label(self.mainframe, text="Press Download to Begin", justify='center')
self.hint_label.grid(row=6)
self.prgbar = ttk.Progressbar(self.mainframe, orient='horizontal', mode='determinate', variable=self.progress).grid(column=0, row=7)
self.regno_entry.focus()
def body(self, master, row, columns=DEFAULT_COLUMNS, **kwargs):
"""
Place the required elements using the grid layout method.
Returns the number of rows taken by this element.
"""
self.checkbox = ttk.Checkbutton(master, text=self.text,
variable=self.value)
self.checkbox.grid(row=row, column=0, columnspan=columns, sticky="w")
return 1
def __init__(self, *args, **kwargs):
self.var = kwargs.get('variable', tk.BooleanVar())
kwargs['variable'] = self.var
ttk.Checkbutton.__init__(self, *args, **kwargs)
def frame1(self):
self.frame1 = ttk.LabelFrame(self.master, text = "Parameters", borderwidth = 2, relief = "groove")
self.frame1.place(bordermode = "outside", relwidth = 0.99, relheight = 0.21, relx = 0, x = 5, y = 5, anchor = "nw")
self.frame1.first_run = True
# function
function_label = ttk.Label(self.frame1, text = "Function")
function_option_menu = ttk.OptionMenu(self.frame1, self.function, self.function.get(),
*sorted(self.FUNCOPT))
# max_iter
max_iter_label = ttk.Label(self.frame1, text = "Maximum number of iterations")
max_iter_spinbox = Spinbox(self.frame1, from_ = 2, to_ = 9999,
increment = 1, textvariable = self.max_iter,
width = 6, justify = "right", takefocus = True)
# fps
fps_label = ttk.Label(self.frame1, text = "Delay between frames (ms)")
fps_spinbox = Spinbox(self.frame1, from_ = 1, to_ = 1000,
increment = 1, textvariable = self.interval,
width = 6, justify = "right", takefocus = True)
# seed
seed_button = ttk.Checkbutton(self.frame1, text = "Fix seed",
variable = self.fix_seed, takefocus = False)
seed_spinbox = Spinbox(self.frame1, from_ = 0, to_ = self.MAX_SEED,
increment = 1, textvariable = self.seed,
width = 6, justify = "right", takefocus = True)
# solver
solver_label = ttk.Label(self.frame1, text = "Solver")
solver_option_menu = ttk.OptionMenu(self.frame1, self.solver_name, self.solver_name.get(),
*(self.EAOPT + self.MCOPT), command = self.select_widget)
# constrain
constrain_button = ttk.Checkbutton(self.frame1, text = "Constrain",
variable = self.constrain, takefocus = False)
# Layout
function_label.place(relx = 0., x = 5, y = 5, anchor = "nw")
function_option_menu.place(relx = 0., x = 75, y = 3, anchor = "nw")
max_iter_label.place(relx = 0., x = 5, y = 30, anchor = "nw")
max_iter_spinbox.place(width = 80, relx = 0., x = 220, y = 30, anchor = "nw")
fps_label.place(relx = 0., x = 5, y = 55, anchor = "nw")
fps_spinbox.place(width = 80, relx = 0., x = 220, y = 55, anchor = "nw")
seed_button.place(relx = 0., x = 5, y = 80, anchor = "nw")
seed_spinbox.place(width = 80, relx = 0., x = 220, y = 80, anchor = "nw")
solver_label.place(relx = 0.35, x = 0, y = 5, anchor = "nw")
solver_option_menu.place(relx = 0.35, x = 50, y = 3, anchor = "nw")
constrain_button.place(relx = 0.35, x = 0, y = 80, anchor = "nw")
def __init__(self):
ttk.Frame.__init__(self, borderwidth=3)
self.style = ttk.Style()
# XXX Ideally I wouldn't want to create a Tkinter.IntVar to make
# it works with Checkbutton variable option.
self.theme_autochange = Tkinter.IntVar(self, 0)
self._setup_widgets()
def AObutton(self, graphnum):
toplvl = tk.Toplevel()
toplvl.withdraw()
frame = ttk.Frame(toplvl, padding=[2, 3, 3, 0])
boxwidth = 15
#Create the labels
lbl = ttk.Label(frame, text='Label')
CreateToolTip(lbl, \
'This text will show up in the legend and the log file')
lbl.grid(row=0, column=1)
mult = ttk.Label(frame, text='Multiplier')
CreateToolTip(mult, \
'Multiply by this value')
mult.grid(row=0, column=2)
offset = ttk.Label(frame, text='Offset')
CreateToolTip(offset, \
'Add this value. Happens AFTER the data is multiplied')
offset.grid(row=0, column=3)
dashed = ttk.Label(frame, text='Dashed')
CreateToolTip(dashed, \
'If checked, the line will be dashed')
dashed.grid(row=0, column=4)
ttk.Label(frame, text='Line 1').grid(row=1, column=0, padx=2)
ttk.Label(frame, text='Line 2').grid(row=2, column=0, padx=2)
ttk.Label(frame, text='Line 3').grid(row=3, column=0, padx=2)
for row in range(1,3+1):
key = 'graph'+str(graphnum)+'line'+str(row)
#Label
ttk.Entry(frame, width=boxwidth, \
textvariable=self.controller.TKvariables[key][0]).grid(row=row, column=1)
#Multiplier
ttk.Entry(frame, width=boxwidth, \
textvariable=self.controller.TKvariables[key][4]).grid(row=row, column=2)
#Offset
ttk.Entry(frame, width=boxwidth, \
textvariable=self.controller.TKvariables[key][5]).grid(row=row, column=3)
#Dashed
ttk.Checkbutton(frame, onvalue='--', offvalue='-', \
variable=self.controller.TKvariables[key][3]).grid(row=row, column=4)
ttk.Button(frame, text='OK', command=toplvl.destroy).grid(row=5,\
column=3, columnspan=2, sticky='ew', pady=4)
#Center the window
frame.grid()
toplvl.update()
scrwidth = toplvl.winfo_screenwidth()
scrheight = toplvl.winfo_screenheight()
winwidth = toplvl.winfo_reqwidth()
winheight = toplvl.winfo_reqheight()
winposx = int(round(scrwidth/2 - winwidth/2))
winposy = int(round(scrheight/2 - winheight/2))
toplvl.geometry('{}x{}+{}+{}'.format(winwidth, winheight, winposx, winposy))
toplvl.deiconify()