Advertisement
here2share

# Tk_table_chart.py

Sep 24th, 2020
1,078
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.96 KB | None | 0 0
  1. # Tk_table_chart.py
  2.  
  3. import Tkinter as tk
  4. from PIL import Image, ImageTk
  5.  
  6. VALUES = '''
  7. container ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  8. anchor ? - ? - - - ? - - ? - ? - - -
  9. cursor ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  10. font ? - ? ? ? - ? ? ? ? - ? ? ? ?
  11. bitmap ? - ? - - - ? - - - - ? - - -
  12. justify ? - ? ? ? - ? - ? ? - ? - - ?
  13. image ? - ? - - - ? - - - - ? - - -
  14. width ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  15. height ? ? ? ? - ? ? ? ? - ? ? - ? -
  16. foreground ? - ? ? ? - ? ? ? ? - ? ? ? ?
  17. background ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  18. padx ? - ? - - ? ? ? - ? - ? - ? -
  19. pady ? - ? - - ? ? ? - ? - ? - ? -
  20. relief ? ? ? - ? ? ? ? ? ? ? ? ? ? ?
  21. text ? - ? - ? - ? ? - ? - ? - - ?
  22. state ? ? ? ? ? - ? - ? - - ? ? ? ?
  23. takefocus ? ? ? ? ? ? ? ? ? ? - ? ? ? ?
  24. highlightcolor ? ? ? - ? ? ? ? ? ? - ? ? ? ?
  25. highlightbackground ? ? ? - ? ? ? ? ? ? - ? ? ? ?
  26. command ? - ? - - - - - - - - ? ? - ?
  27. length - - - - - - - - - - - - ? - -
  28. '''.split()
  29.  
  30. '''
  31. from PIL import Image, ImageTk
  32.  
  33. from tkFileDialog import askopenfilename
  34. img_data = askopenfilename(filetypes=[('png files', '.png')]) # needs to be placed after pack()
  35.  
  36. image = Image.open(img_data)
  37. w,h = image.size
  38. img = Image.new('RGBA', (w,h))
  39. rgb = image.convert("RGBA")
  40. p = list(rgb.getdata())
  41.  
  42. for y in range(h):
  43.     s = ''
  44.     for x in range(w):
  45.         t = p.pop()
  46.         if sum(t) > 80:
  47.             s += 'X'
  48.         else:
  49.             s += '.'
  50.     print s
  51. '''
  52.  
  53. tbitmap = '''
  54. ................
  55. .......XX.......
  56. .....XXXXXX.....
  57. ...XXXXXXXXXX...
  58. ...XXXXXXXXXX...
  59. ..XXXX....XXXX..
  60. ..XXX......XXX..
  61. .XXXX......XXXX.
  62. .XXXX......XXXX.
  63. ..XXX......XXX..
  64. ..XXXX....XXXX..
  65. ...XXXXXXXXXX...
  66. ...XXXXXXXXXX...
  67. .....XXXXXX.....
  68. .......XX.......
  69. ................
  70. '''.strip()
  71.  
  72. tbitmap = list(tbitmap)
  73.  
  74.  
  75. HEADINGS = "Button  Canvas  Checkbutton  Combobox  Entry  Frame  Label  LabelFrame  Listbox  Message  PanedWindow  Radiobutton  Scale  Text  Spinbox".split()
  76.  
  77. def TableChart():
  78.  
  79.     MAX_COLUMNS = len(HEADINGS)
  80.     FONT_SIZE = 10
  81.     subject = 'Properties of Tkinter Controls'
  82.  
  83.     r = 0
  84.     label = tk.Label(root, text='  '+subject, anchor='w', bg='#00ff00',
  85.                      font=("Arial", FONT_SIZE+10, "bold"))
  86.     label.grid(row=r, columnspan=MAX_COLUMNS+1, sticky="ew")
  87.     r = 1
  88.     c = 0
  89.     for heading in ['']+HEADINGS:
  90.         label = tk.Label(root, text=heading+'  ', bg='#00cc00',
  91.                          font=("Arial", FONT_SIZE+2, "bold"))
  92.         label.grid(row=r, column=c, sticky="ew")
  93.         c += 1
  94.     c = 0
  95.     r = 2
  96.     for value in VALUES:
  97.         bgc=('#ffffff','#dddddd')[r%2]
  98.         if value == '?':
  99.             label = tk.Label(root, image=imgTk, anchor='w', bg=bgc)
  100.         else:
  101.             label = tk.Label(root, text=' '+value+' ', anchor='w', bg=bgc,
  102.                              font=("Arial", FONT_SIZE))
  103.         label.grid(row=r, column=c, sticky="news")
  104.         c += 1
  105.  
  106.         if c > MAX_COLUMNS:
  107.             c = 0
  108.             r += 1
  109. 0
  110. root = tk.Tk()
  111. root.title("Table Chart")
  112. wp=16
  113. hp=16
  114. rgb_colors = [(200,200,0,255) if z == 'X' else (0,0,0,0) for z in tbitmap]
  115. img = Image.new('RGBA', (wp+1,hp))
  116. img.putdata(rgb_colors)
  117. imgTk = ImageTk.PhotoImage(img)
  118.  
  119. TableChart()
  120.  
  121. root.mainloop()
  122.  
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement