Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2023
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import ttk
  3. import random
  4. import time
  5.  
  6.  
  7. window = Tk()
  8. window.resizable(True,False)
  9. canvas = Canvas(window)
  10.  
  11. WIDTH = 700
  12.  
  13. ui_frame = Frame(window, width=250, height=600, bg = 'red')
  14. ui_frame.grid(row=0, column=0, padx=10, pady=10)
  15.  
  16. canvas = Canvas(window, width=700, height=600)
  17. canvas.grid(row=0, column=1)
  18.  
  19. #contains 50 bars
  20. bars = []
  21.  
  22. def draw_bars():
  23.  
  24. #should be 700
  25. for x in range(0, 700, 14):
  26. random_y = random.randint(1,590)
  27. bar = canvas.create_rectangle(x ,600, x+10 ,random_y, fill='black' )
  28. bars.append(bar)
  29.  
  30.  
  31.  
  32. def swap_bars(bar_0, bar_1):
  33.  
  34. #get the x coords for each bar
  35. x00, _ , x01, _ = canvas.coords(bar_0)
  36. x10, _ , x11, _ = canvas.coords(bar_1)
  37.  
  38. diff = x00 - x10
  39.  
  40. #move them
  41. canvas.move(bar_0, -diff,0)
  42. canvas.move(bar_1, +diff,0)
  43.  
  44.  
  45. def start_algo(bars, tick_time):
  46.  
  47. #first bar in list
  48. #canvas.itemconfig(bars[0], fill='red')
  49. #canvas.itemconfig(bars[49], fill='blue')
  50.  
  51.  
  52. #Bubble sort
  53. for i, _ in enumerate(bars):
  54. _, y1_low ,_ ,_ = canvas.coords(bars[i]) #unpack
  55. for j, _ in enumerate(bars[1:]):
  56. _, y1_curr, _ , _ = canvas.coords(bars[j]) #unpack
  57. print(i,j)
  58. if y1_curr < y1_low:
  59. swap_bars(bars[i],bars[j])
  60. bars[i], bars[j] = bars[j], bars[i]
  61.  
  62.  
  63.  
  64.  
  65. def reset():
  66. canvas.delete('all')
  67. bars.clear()
  68. draw_bars()
  69.  
  70.  
  71.  
  72. algo_values = ['Bubble Sort', 'MergeSort']
  73. ttk.Combobox(ui_frame,values=algo_values).grid(row=0,column=0)
  74.  
  75. start_button = Button(ui_frame, width=15,height=2, text='Start', command= lambda a=bars, b=0:start_algo(a,b)).grid(row=1,column=0)
  76. reset_button = Button(ui_frame, width=15,height=2, text='Reset', command=reset).grid(row=2,column=0)
  77.  
  78.  
  79. draw_bars()
  80.  
  81.  
  82. window.mainloop()
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement