GUI.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from re import A, I
  2. import customtkinter as ctk
  3. import json
  4. from PIL import Image, ImageTk
  5. import time
  6. import asyncio
  7. from dobluetooth import connect, getData
  8. import dobluetooth
  9. # This could probably go in dobluetooth.py
  10. try:
  11. from bleak.backends.winrt.util import allow_sta
  12. # tell Bleak we are using a graphical user interface that has been properly
  13. # configured to work with asyncio
  14. allow_sta()
  15. except ImportError:
  16. # other OSes and older versions of Bleak will raise ImportError which we
  17. # can safely ignore
  18. pass
  19. """
  20. parse esp32 data string and make each axis and accell data its own varible
  21. then do math on all those varibles to give us ONE NUMBER from all six numbers
  22. """
  23. def getCurrentScore():
  24. #than do math to figure out power level
  25. return 30
  26. names = []
  27. scores = []
  28. currentScore = getCurrentScore()
  29. highestScore = 100
  30. highScoreName = ""
  31. if currentScore > highestScore :
  32. highestScore = currentScore
  33. f = open("scores.txt", "rw")
  34. f.write(str(highestScore) + highScoreName)
  35. scores.append(highestScore)
  36. names.append(highScoreName)
  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. def placeLeaderboard():
  45. canvas.create_rectangle(0, 0, 500, 500, fill="grey20", width=2) #grey14 to match background
  46. intx = 0
  47. inty = 60
  48. for i in range(len(names)):
  49. label1 = ctk.CTkLabel(width=124,height=39,text_color="white",text=names[i], font=("Arial",15),master=app)
  50. label1.place(x=intx,y=inty)
  51. label2 = ctk.CTkLabel(width=124,height=39,text_color="white",text=scores[i], font=("Arial",15),master=app)
  52. label2.place(x=intx+125,y=inty)
  53. inty+=40
  54. LEADERBOARD = ctk.CTkLabel(width=249,height=39,text_color="white",text="Leaderboard", font=("Arial",50),master=app)
  55. LEADERBOARD.place(x=0,y=0)
  56. StartButton = ctk.CTkButton(width=00,height=150,text="START",fg_color="green",corner_radius=50,font=("Arial",50),text_color="gray99",master=app)
  57. StartButton.place(x=50,y=300)
  58. ResetButton = ctk.CTkButton(width=00,height=150,text="RESET",fg_color="orange2",corner_radius=50,font=("Arial",50),text_color="gray99", master=app)
  59. ResetButton.place(x=50,y=500)
  60. scoreTitle = ctk.CTkLabel(width=50,height=20,text_color="white",text="Current Score", font=("Arial",50),master=app)
  61. scoreTitle.place(x=350, y=20)
  62. scoreLabel = ctk.CTkLabel(width=50,height=20,text_color="white",text=currentScore, font=("Arial",50),master=app)
  63. scoreLabel.place(x=500, y=100)
  64. nameEntry = ctk.CTkEntry(width=300,height=50,master=app,font=("Arial",50))
  65. nameEntry.place(x=370,y=200)
  66. nameEntryButton = ctk.CTkButton(width=50,height=50,text="ENTER",fg_color="green",font=("Arial",20),text_color="gray99", master=app)
  67. nameEntryButton.place(x=670,y=205)
  68. image = Image.open("./BellDrawing.png")
  69. photo = ImageTk.PhotoImage(image)
  70. #ctkphoto = ctk.CTkImage(image)
  71. image_label = ctk.CTkLabel(image=photo,text="",width=10, master=app)
  72. image_label.place(x=800,y=0)
  73. dinger = ctk.CTkLabel(width=40,height=30,text="",fg_color="gray77",master=app)
  74. dinger.place(x=1405,y=900)
  75. placeLeaderboard()
  76. #label = customtkinter.CTkLabel(app, text=f"Current Highest Record is: {highestRecord} | this was acomplished by: {highestRecordName}", fg_color="brown")
  77. #progressbar = customtkinter.CTkProgressBar(app, height=300,orientation="vertical",width=40,fg_color="blue",progress_color="green",mode='determinate')
  78. #progressbar.set(float(f"0.{highestRecord}"))
  79. #label.grid(column=0,row=0)
  80. #progressbar.grid(column=25,row=8)
  81. def data():
  82. asyncio.run(dobluetooth.getData())
  83. app.after(1000,data)
  84. app.mainloop()