Benkex

J_tkinter

Jan 29th, 2022
1,179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. import tkinter as tk
  2.  
  3. w, h = 700, 400
  4.  
  5. # n, k = map(int, input().split())
  6. def start():
  7.     draw.delete('all')
  8.     n = int(n_entry.get())
  9.     k = int(k_entry.get())
  10.  
  11.     if k > (n-1)*n:
  12.         draw.create_text(350, 200, text="impossible")
  13.         return
  14.  
  15.     x, y = 0, 0
  16.     r = n*2
  17.     hit = 0
  18.     for i in range(n):
  19.         if hit + 2*i > k:
  20.             break
  21.         hit += 2*i
  22.     diff = k - hit
  23.     stopindex = i + ((n-1)*n == hit)
  24.     xplus = r * 2 + 1 - diff
  25.  
  26.     def coords(x, y, rad):
  27.         mag = w/n/15
  28.         x, y = x+r, y+r
  29.         x, y, rad = x*mag, y*mag, rad*mag
  30.         return (x-rad, y-rad, x+rad, y+rad)
  31.  
  32.     for i in range(stopindex):
  33.         print(x, y, r)
  34.         draw.create_oval(coords(x, y, r))
  35.         x += 2
  36.  
  37.     x += xplus - 2
  38.     if stopindex != n:
  39.         print(x, y, r)
  40.         draw.create_oval(coords(x, y, r))
  41.     x += r+2
  42.     for _ in range(stopindex+1, n):
  43.         print(x, y, 1)
  44.         draw.create_oval(coords(x, y, 1))
  45.         x += 3
  46.     print()
  47.  
  48. window = tk.Tk()
  49. n_entry = tk.Entry(window)
  50. n_entry.pack()
  51. k_entry = tk.Entry(window)
  52. k_entry.pack()
  53. start_button = tk.Button(window, text="Get it!", command=start)
  54. start_button.pack()
  55. draw = tk.Canvas(window, background='white', width=700, height=400)
  56. draw.pack()
  57.  
  58. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment