GUI.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import customtkinter as ctk
  2. import json
  3. from PIL import Image, ImageTk
  4. import asyncio
  5. from bleak import BleakScanner
  6. from bleak import BleakClient
  7. target_name = "Long name works now"
  8. SERVICE_UUID= "d86aecf2-d87d-489f-b664-b02de82b2fc0"
  9. CHARACTERISTIC_UUID= "d86aecf2-d87d-489f-b664-b02de82b2fc0"
  10. async def connect():
  11. target_address = None
  12. devices = await BleakScanner.discover()
  13. for d in devices:
  14. print(d)
  15. if target_name == d.name:
  16. target_address = d.address
  17. print("found target {} bluetooth device with address {} ".format(target_name,target_address))
  18. break
  19. else:
  20. print("could not find device")
  21. return target_address
  22. #function that will recive the ESP32 data
  23. def getCurrentScore():
  24. print(30)
  25. #than do math to figure out power level
  26. currentScore = getCurrentScore()
  27. highestScore = 100
  28. highScoreName = ""
  29. if currentScore > highestScore :
  30. highestScore = currentScore
  31. f = open("scores.txt", "rw")
  32. f.write(highestScore + highScoreName)
  33. scores.append(highestScore)
  34. names.append(highScoreName)
  35. async def main():
  36. await connect()
  37. ctk.set_appearance_mode("System") # Modes: system (default), light, dark
  38. ctk.set_default_color_theme("blue") # Themes: blue (default), dark-blue, green
  39. app = ctk.CTk() # create CTk window like you do with the Tk window
  40. app.geometry("1440x1024")
  41. canvas = ctk.CTkCanvas(app, width=250, height=250,highlightthickness=0,)
  42. canvas.config(background="white")
  43. canvas.place(x=0,y=0)
  44. names = []
  45. scores = []
  46. def placeLeaderboard():
  47. canvas.create_rectangle(0, 0, 500, 500, fill="grey20", width=2) #grey14 to match background
  48. intx = 0
  49. inty = 60
  50. for i in range(len(names)):
  51. label1 = ctk.CTkLabel(width=124,height=39,text_color="white",text=names[i], font=("Arial",15),master=app)
  52. label1.place(x=intx,y=inty)
  53. label2 = ctk.CTkLabel(width=124,height=39,text_color="white",text=scores[i], font=("Arial",15),master=app)
  54. label2.place(x=intx+125,y=inty)
  55. inty+=40
  56. LEADERBOARD = ctk.CTkLabel(width=249,height=39,text_color="white",text="Leaderboard", font=("Arial",50),master=app)
  57. LEADERBOARD.place(x=0,y=0)
  58. StartButton = ctk.CTkButton(width=00,height=150,text="START",fg_color="green",corner_radius=50,font=("Arial",50),text_color="gray99",master=app)
  59. StartButton.place(x=50,y=300)
  60. ResetButton = ctk.CTkButton(width=00,height=150,text="RESET",fg_color="orange2",corner_radius=50,font=("Arial",50),text_color="gray99", master=app)
  61. ResetButton.place(x=50,y=500)
  62. scoreTitle = ctk.CTkLabel(width=50,height=20,text_color="white",text="Current Score", font=("Arial",50),master=app)
  63. scoreTitle.place(x=350, y=20)
  64. scoreLabel = ctk.CTkLabel(width=50,height=20,text_color="white",text=currentScore, font=("Arial",50),master=app)
  65. scoreLabel.place(x=500, y=100)
  66. nameEntry = ctk.CTkEntry(width=300,height=50,master=app,font=("Arial",50))
  67. nameEntry.place(x=370,y=200)
  68. nameEntryButton = ctk.CTkButton(width=50,height=50,text="ENTER",fg_color="green",font=("Arial",20),text_color="gray99", master=app)
  69. nameEntryButton.place(x=670,y=205)
  70. image = Image.open("./Bell Drawing.png")
  71. photo = ImageTk.PhotoImage(image)
  72. image_label = ctk.CTkLabel(image=photo,text="",width=10, master=app)
  73. image_label.place(x=800,y=0)
  74. dinger = ctk.CTkLabel(width=40,height=30,text="",fg_color="gray77",master=app)
  75. dinger.place(x=1405,y=900)
  76. placeLeaderboard()
  77. #label = customtkinter.CTkLabel(app, text=f"Current Highest Record is: {highestRecord} | this was acomplished by: {highestRecordName}", fg_color="brown")
  78. #progressbar = customtkinter.CTkProgressBar(app, height=300,orientation="vertical",width=40,fg_color="blue",progress_color="green",mode='determinate')
  79. #progressbar.set(float(f"0.{highestRecord}"))
  80. #label.grid(column=0,row=0)
  81. #progressbar.grid(column=25,row=8)
  82. asyncio.run(main())
  83. app.mainloop()