Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- check_nu = b'iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TRZEWB4uIOGSoTi2IijpKFYtgobQVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi4uqk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLNrHFA1y0jFY2I2tyr2vCKAIAYRwYzETD2RXszAc3zdw8fXuyjP8j735wgqeZMBPpF4jumGRbxBPL1p6Zz3iUOsJCnE58QRgy5I/Mh12eU3zkWHBZ4ZMjKpeeIQsVjsYLmDWclQiaeIw4qqUb6QdVnhvMVZrdRY6578hYG8tpLmOs0RxLGEBJIQIaOGMiqwEKVVI8VEivZjHv5hx58kl0yuMhg5FlCFCsnxg//B727NwuSEmxSIAd0vtv0xCvTsAs26bX8f23bzBPA/A1da219tALOfpNfbWvgI6N8GLq7bmrwHXO4AQ0+6ZEiO5KcpFArA+xl9Uw4YuAX61tzeWvs4fQAy1NXyDXBwCIwVKXvd4929nb39e6bV3w/0UXLbKEvbjQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+MMDRctIGmzOYIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAALElEQVQoz2M0Njb+z0AiYGFgYGA4c+YMI7EaTExM/jMxkAFGNQ1jTYzkpD0ATtMHS/nRiQwAAAAASUVORK5CYII='
- check_nc = b'iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TRZEWB4uIOGSoTi2IijpKFYtgobQVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi4uqk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLNrHFA1y0jFY2I2tyr2vCKAIAYRwYzETD2RXszAc3zdw8fXuyjP8j735wgqeZMBPpF4jumGRbxBPL1p6Zz3iUOsJCnE58QRgy5I/Mh12eU3zkWHBZ4ZMjKpeeIQsVjsYLmDWclQiaeIw4qqUb6QdVnhvMVZrdRY6578hYG8tpLmOs0RxLGEBJIQIaOGMiqwEKVVI8VEivZjHv5hx58kl0yuMhg5FlCFCsnxg//B727NwuSEmxSIAd0vtv0xCvTsAs26bX8f23bzBPA/A1da219tALOfpNfbWvgI6N8GLq7bmrwHXO4AQ0+6ZEiO5KcpFArA+xl9Uw4YuAX61tzeWvs4fQAy1NXyDXBwCIwVKXvd4929nb39e6bV3w/0UXLbKEvbjQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+MMDRctDrVlNE0AAAAjdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgd2l0aCBsb3ZlyGW0XgAAAJdJREFUKM+d0rENAyEMBdDvKA1zeART07MIGzAFE7EDK1B5CMqf7pIUlyP3JZdP+rItZkb8mScAjDFkF8QY+cCNbCF3R86ZvXduIXdHKYWqipSSXKJP0FqTEMK7Xu+dOWe6+yU4UEpJVBWlFLr7TwAAYmYcY8haC7VWzjkBAGfga+UhBLTWRFVPwREzI0nsjpndO67c+b0XBDxvkWRMW24AAAAASUVORK5CYII='
- class example_window:
- def __init__(self, master):
- self.master = master
- chckbox = custom_checkbox_text(master, "red", "Example")
- chckbox.pack(padx=20, pady=10)
- class custom_checkbox_text(tk.Frame):
- def __init__(self, parent, colour, text, *args, **kwargs):
- tk.Frame.__init__(self, parent)
- self.checkbox = custom_checkbox(self, colour, *args, **kwargs)
- self.checkbox.grid(row=0, column=0)
- self.label = tk.Label(self, text=text)
- self.label.grid(row=0, column=1)
- self.label.bind("<Enter>", self.checkbox.focus_in)
- self.label.bind("<Leave>", self.checkbox.focus_out)
- self.label.bind("<Button-1>", self.on_label_click)
- self.columnconfigure(0, weight=1)
- self.columnconfigure(0, weight=1)
- self.rowconfigure(0, weight=1)
- def on_label_click(self, event=None):
- if self.checkbox.variable.get() == self.checkbox['onvalue']:
- self.checkbox.variable.set(self.checkbox['offvalue'])
- else:
- self.checkbox.variable.set(self.checkbox['onvalue'])
- self.checkbox.focus_update()
- def get(self):
- return self.checkbox.variable.get()
- class custom_checkbox(tk.Checkbutton):
- def __init__(self, parent, colour, *args, **kwargs):
- default_kwargs = {'image': None, 'selectimage': None, 'indicatoron': False,
- 'onvalue': 1, 'offvalue': 0, 'variable': None, 'offrelief': 'sunken'}
- for key, value in default_kwargs.items():
- if key not in kwargs:
- kwargs[key] = value
- self.colour = colour
- self.curr_colour = "black"
- self.hover = False
- if kwargs['variable'] is None:
- self.variable = kwargs['variable'] = tk.IntVar(value=1)
- print(kwargs, kwargs['variable'].get())
- if kwargs['variable'].get() == 0:
- if kwargs['image'] is None:
- self.off_image = kwargs['image'] = tk.PhotoImage(data=check_nu)
- else:
- self.off_image = kwargs['image']
- if kwargs['selectimage'] is None:
- self.on_image = tk.PhotoImage(data=check_nc)
- else:
- self.on_image = kwargs['selectimage']
- else:
- if kwargs['image'] is None:
- self.on_image = kwargs['image'] = tk.PhotoImage(data=check_nc)
- else:
- self.on_image = kwargs['image']
- if kwargs['selectimage'] is None:
- self.off_image = tk.PhotoImage(data=check_nu)
- else:
- self.off_image = kwargs['selectimage']
- tk.Checkbutton.__init__(self, parent, *args, **kwargs)
- self.bind("<Enter>", self.focus_in)
- self.bind("<Leave>", self.focus_out)
- self.variable.trace("w", self.focus_update)
- def edit_check(self, colour, image):
- image.put((colour,), to=(0, 0, 1, 13)) # LEFT
- image.put((colour,), to=(0, 0, 13, 1)) # TOP
- image.put((colour,), to=(12, 0, 13, 13)) # RIGHT
- image.put((colour,), to=(0, 12, 13, 13)) # BOTTOM
- def focus_in(self, event=None):
- image = self.on_image if self.variable.get() == self['onvalue'] else self.off_image
- self.edit_check(self.colour, image)
- self.curr_colour = self.colour
- self.configure(image=image)
- self.image = image
- self.hover = True
- def focus_out(self, event=None):
- image = self.on_image if self.variable.get() == self['onvalue'] else self.off_image
- self.edit_check("black", image)
- self.curr_colour = "black"
- self.configure(image=image)
- self.image = image
- self.hover = False
- def focus_update(self, *args):
- if self.variable.get() == self['onvalue']:
- image = self.on_image
- else:
- image = self.off_image
- self.configure(image=image)
- self.image = image
- if self.hover:
- self.focus_in()
- def main():
- root = tk.Tk()
- example_window_gui = example_window(root)
- root.mainloop()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement