Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.91 KB | None | 0 0
  1. import tkinter as tk
  2.  
  3. check_nu = b'iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TRZEWB4uIOGSoTi2IijpKFYtgobQVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi4uqk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLNrHFA1y0jFY2I2tyr2vCKAIAYRwYzETD2RXszAc3zdw8fXuyjP8j735wgqeZMBPpF4jumGRbxBPL1p6Zz3iUOsJCnE58QRgy5I/Mh12eU3zkWHBZ4ZMjKpeeIQsVjsYLmDWclQiaeIw4qqUb6QdVnhvMVZrdRY6578hYG8tpLmOs0RxLGEBJIQIaOGMiqwEKVVI8VEivZjHv5hx58kl0yuMhg5FlCFCsnxg//B727NwuSEmxSIAd0vtv0xCvTsAs26bX8f23bzBPA/A1da219tALOfpNfbWvgI6N8GLq7bmrwHXO4AQ0+6ZEiO5KcpFArA+xl9Uw4YuAX61tzeWvs4fQAy1NXyDXBwCIwVKXvd4929nb39e6bV3w/0UXLbKEvbjQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+MMDRctIGmzOYIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAALElEQVQoz2M0Njb+z0AiYGFgYGA4c+YMI7EaTExM/jMxkAFGNQ1jTYzkpD0ATtMHS/nRiQwAAAAASUVORK5CYII='
  4. 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='
  5.  
  6.  
  7. class example_window:
  8.     def __init__(self, master):
  9.         self.master = master
  10.         chckbox = custom_checkbox_text(master, "red", "Example")
  11.         chckbox.pack(padx=20, pady=10)
  12.        
  13. class custom_checkbox_text(tk.Frame):
  14.     def __init__(self, parent, colour, text, *args, **kwargs):
  15.         tk.Frame.__init__(self, parent)
  16.         self.checkbox = custom_checkbox(self, colour, *args, **kwargs)
  17.         self.checkbox.grid(row=0, column=0)
  18.         self.label = tk.Label(self, text=text)
  19.         self.label.grid(row=0, column=1)
  20.  
  21.         self.label.bind("<Enter>", self.checkbox.focus_in)
  22.         self.label.bind("<Leave>", self.checkbox.focus_out)
  23.         self.label.bind("<Button-1>", self.on_label_click)
  24.  
  25.         self.columnconfigure(0, weight=1)
  26.         self.columnconfigure(0, weight=1)
  27.         self.rowconfigure(0, weight=1)
  28.  
  29.     def on_label_click(self, event=None):
  30.         if self.checkbox.variable.get() == self.checkbox['onvalue']:
  31.             self.checkbox.variable.set(self.checkbox['offvalue'])
  32.         else:
  33.             self.checkbox.variable.set(self.checkbox['onvalue'])
  34.         self.checkbox.focus_update()
  35.  
  36.     def get(self):
  37.         return self.checkbox.variable.get()
  38.  
  39. class custom_checkbox(tk.Checkbutton):
  40.     def __init__(self, parent, colour, *args, **kwargs):
  41.         default_kwargs = {'image': None, 'selectimage': None, 'indicatoron': False,
  42.                           'onvalue': 1, 'offvalue': 0, 'variable': None, 'offrelief': 'sunken'}
  43.         for key, value in default_kwargs.items():
  44.             if key not in kwargs:
  45.                 kwargs[key] = value
  46.  
  47.         self.colour = colour
  48.         self.curr_colour = "black"
  49.         self.hover = False
  50.         if kwargs['variable'] is None:
  51.             self.variable = kwargs['variable'] = tk.IntVar(value=1)
  52.         print(kwargs, kwargs['variable'].get())
  53.         if kwargs['variable'].get() == 0:
  54.             if kwargs['image'] is None:
  55.                 self.off_image = kwargs['image'] = tk.PhotoImage(data=check_nu)
  56.             else:
  57.                 self.off_image = kwargs['image']
  58.             if kwargs['selectimage'] is None:
  59.                 self.on_image = tk.PhotoImage(data=check_nc)
  60.             else:
  61.                 self.on_image = kwargs['selectimage']
  62.         else:
  63.             if kwargs['image'] is None:
  64.                 self.on_image = kwargs['image'] = tk.PhotoImage(data=check_nc)
  65.             else:
  66.                 self.on_image = kwargs['image']
  67.             if kwargs['selectimage'] is None:
  68.                 self.off_image = tk.PhotoImage(data=check_nu)
  69.             else:
  70.                 self.off_image = kwargs['selectimage']
  71.  
  72.         tk.Checkbutton.__init__(self, parent, *args, **kwargs)
  73.         self.bind("<Enter>", self.focus_in)
  74.         self.bind("<Leave>", self.focus_out)
  75.         self.variable.trace("w", self.focus_update)
  76.  
  77.     def edit_check(self, colour, image):
  78.         image.put((colour,), to=(0, 0, 1, 13)) # LEFT
  79.         image.put((colour,), to=(0, 0, 13, 1)) # TOP
  80.         image.put((colour,), to=(12, 0, 13, 13)) # RIGHT
  81.         image.put((colour,), to=(0, 12, 13, 13)) # BOTTOM
  82.  
  83.        
  84.     def focus_in(self, event=None):
  85.         image = self.on_image if self.variable.get() == self['onvalue'] else self.off_image
  86.         self.edit_check(self.colour, image)
  87.         self.curr_colour = self.colour
  88.         self.configure(image=image)
  89.         self.image = image
  90.         self.hover = True
  91.  
  92.     def focus_out(self, event=None):
  93.         image = self.on_image if self.variable.get() == self['onvalue'] else self.off_image
  94.         self.edit_check("black", image)
  95.         self.curr_colour = "black"
  96.         self.configure(image=image)
  97.         self.image = image
  98.         self.hover = False
  99.  
  100.     def focus_update(self, *args):
  101.  
  102.         if self.variable.get() == self['onvalue']:
  103.             image = self.on_image
  104.         else:
  105.             image = self.off_image
  106.         self.configure(image=image)
  107.         self.image = image
  108.         if self.hover:
  109.             self.focus_in()
  110.  
  111. def main():
  112.     root = tk.Tk()
  113.     example_window_gui = example_window(root)
  114.     root.mainloop()
  115.  
  116. if __name__ == '__main__':
  117.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement