here2share

# tk_mouse_right_delete_objects.py

Feb 21st, 2021 (edited)
2,085
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.15 KB | None | 0 0
  1. # tk_mouse_right_delete_objects.py zzz
  2.  
  3. from tkinter import *
  4. from PIL import ImageDraw, ImageTk, Image, ImageGrab
  5. from math import sin, cos, pi
  6. import random
  7.  
  8. root = Tk()
  9. root.title("Tk Mouse Right Delete Objects")
  10. ### root.withdraw() # vs root.deiconify()')
  11. xm,ym = 600,600
  12.  
  13. canvas = Canvas(root, width=xm, height=ym)
  14. canvas.grid()
  15.  
  16. xy = []
  17. def click(event):
  18.     x,y = event.x,event.y
  19.     xy.append([x,y])
  20.    
  21. def delete_obj(event,obj):
  22.     canvas.delete(obj)
  23.  
  24. def rounded_button():
  25.     vertex_count = 100
  26.     t =  pi/vertex_count
  27.     a = 1.577
  28.     VERTEX = [(x1,y1+r)]
  29.     VERTEX += [(    x1+r*cos(i*2*t+a), \
  30.                     y1+r*sin(i*2*t+a)) for i in range(vertex_count/2)]
  31.     VERTEX += [(x2,y1-r)]
  32.     VERTEX += [[(   x2+r*cos(i*2*t+a), \
  33.                     y1+r*sin(i*2*t+a))] for i in range(vertex_count/2,vertex_count)]
  34.     font_style = ''
  35.     if r > 21+borderw:
  36.         font_style = 'bold italic'
  37.     fff = ' '.join(['ariel', str(int(max(6,r*0.6))), font_style])
  38.     obj = 'obj_'+str(ccc)
  39.     canvas.create_polygon(VERTEX, fill=fillc, width=borderw, outline=borderc, tag=obj)
  40.     canvas.create_text(x1+(x2-x1)/2, y1, text='Python!', font=fff, fill=borderc, tag=obj)
  41.     canvas.tag_bind(obj, '<Button-3>', lambda event, i=obj: delete_obj(event,i))
  42. root.bind('<Button-1>', click)
  43.  
  44. def pop2(zzz):
  45.     L = len(zzz)
  46.     return zzz[ccc%L]
  47. 0
  48. zzz = '''
  49. red orange green blue purple gray black
  50. red orange yellow green blue purple
  51. white
  52. black
  53. '''.strip().splitlines()
  54. btn_colors = [[(z,zzz[i+2]),(zzz[i+2],z)] for i in range(2) for z in zzz[i].split()]
  55. btn_colors = [[a,b] for z in btn_colors for a,b in z]
  56. random.shuffle(btn_colors)
  57. border_width = list(range(10))
  58. xya = [(x,y) for x in range(100,xm-200,50) for y in range(100,ym-200,50)]
  59. random.shuffle(xya)
  60. xyb = [(x,y) for x in range(0,100,5) for y in range(24,16*5,4)]
  61. random.shuffle(xyb)
  62.  
  63. sss = 'Click Mouse Right To Delete Target Objects'
  64. canvas.create_text(xm/2, 40, text=sss, font='ariel 21 italic', fill='blue')
  65.  
  66. ccc = 0
  67. while 1:
  68.     if xy:
  69.         fillc,borderc = pop2(btn_colors)
  70.         borderw = pop2(border_width)
  71.         x1,y1 = xy.pop()
  72.         x2,r = pop2(xyb)
  73.         x2 = x1+x2+r+20 ### to fit around text
  74.         rounded_button()
  75.         xy = []
  76.         ccc += 1
  77.     canvas.update()
  78. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment