give me detailed content for every
give me detailed content for every
give me detailed content for every
Chapter 1: Introduction
Background Information
Purpose of the Project
Project Scope
import customtkinter
import os
from PIL import Image
import requests
from tkinter import filedialog, messagebox
import json
import base64
from tkinter import Canvas, Button
from PIL import ImageGrab
import webbrowser
class App(customtkinter.CTk):
def __init__(self):
super().__init__()
self.api_key = "sk-proj-YQrUlgsCvV8t96c32aXHT3BlbkFJAmnsTA244jgXgxPehWXJ"
self.navigation_frame_label = customtkinter.CTkLabel(self.navigation_frame,
text=" PD Tracker", image=self.logo_image,
compound="left",
font=customtkinter.CTkFont(size=15, weight="bold"))
self.navigation_frame_label.grid(row=0, column=0, padx=20, pady=20)
self.home_button = customtkinter.CTkButton(self.navigation_frame,
corner_radius=0, height=40, border_spacing=10, text="Links",
fg_color="transparent",
text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.home_image,
anchor="w", command=self.home_button_event)
self.home_button.grid(row=1, column=0, sticky="ew")
self.frame_2_button = customtkinter.CTkButton(self.navigation_frame,
corner_radius=0, height=40, border_spacing=10, text="Image Analysis",
fg_color="transparent",
text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.chat_image,
anchor="w", command=self.frame_2_button_event)
self.frame_2_button.grid(row=2, column=0, sticky="ew")
self.frame_3_button = customtkinter.CTkButton(self.navigation_frame,
corner_radius=0, height=40, border_spacing=10, text="Spiral Drawing",
fg_color="transparent",
text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.add_user_image,
anchor="w", command=self.frame_3_button_event)
self.frame_3_button.grid(row=3, column=0, sticky="ew")
self.appearance_mode_menu =
customtkinter.CTkOptionMenu(self.navigation_frame, values=["Light", "Dark",
"System"],
command=self.change_appearance_mode_event)
self.appearance_mode_menu.grid(row=6, column=0, padx=20, pady=20,
sticky="s")
self.home_frame_button_1 = customtkinter.CTkButton(self.home_frame,
text="Information", command=self.open_link_1)
self.home_frame_button_1.grid(row=1, column=0, padx=20, pady=10)
self.home_frame_button_2 = customtkinter.CTkButton(self.home_frame,
text="Inspiration", command=self.open_link_2)
self.home_frame_button_2.grid(row=2, column=0, padx=20, pady=10)
self.home_frame_button_3 = customtkinter.CTkButton(self.home_frame,
text="Ideation Paper", command=self.open_link_3)
self.home_frame_button_3.grid(row=3, column=0, padx=20, pady=10)
self.home_frame_button_4 = customtkinter.CTkButton(self.home_frame,
text="Wikipedia", command=self.open_link_4)
self.home_frame_button_4.grid(row=4, column=0, padx=20, pady=10)
self.uploaded_image_path = None
self.canvas.bind('<B1-Motion>', self.paint)
self.last_draw = None
def home_button_event(self):
self.select_frame_by_name("home")
def frame_2_button_event(self):
self.select_frame_by_name("frame_2")
def frame_3_button_event(self):
self.select_frame_by_name("frame_3")
def upload_image(self):
file_types = [("Image Files", "*.png;*.jpg;*.jpeg")]
self.image_path = filedialog.askopenfilename(filetypes=file_types)
if self.image_path:
# Use self.image_path instead of file_path for clarity and to fix the
undefined variable error
self.result_text_field.insert("end", f"Loaded image: {self.image_path}\
n")
else:
self.result_text_field.insert("end", "No Image Uploaded\n")
def analyze_image(self):
if not self.image_path:
self.result_text_field.insert("end", "Please Upload an Image First\n")
return
base64_image = self.encode_image()
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-4-turbo",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Analyze the hand-drawn spiral image and
provide a detailed description of any characteristics that may suggest Parkinson's
disease tremors."
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions",
headers=headers, json=payload)
if response.status_code == 200:
result_txt = response.json()['choices'][0]['message']['content']
# Insert the analysis result into the text field
self.result_text_field.insert("end", str(result_txt) + "\n")
else:
self.result_text_field.insert("end", f"Failed to analyze the image.
Error: {response.text}\n")
def save_drawing(self):
x0 = self.canvas.winfo_rootx() + self.canvas.winfo_x()
y0 = self.canvas.winfo_rooty() + self.canvas.winfo_y()
x1 = x0 + self.canvas.winfo_width()
y1 = y0 + self.canvas.winfo_height()
if file_path:
# Grab the contents of the canvas and save as a PNG file at the chosen
location
ImageGrab.grab(bbox=(x0, y0, x1, y1)).save(file_path)
messagebox.showinfo("Save Drawing", "Drawing saved successfully!")
def open_link_1(self):
webbrowser.open("https://medium.com/ai-techsystems/parkinsons-disease-
detection-using-spiral-drawings-and-cnn-b82de9f3ed73")
webbrowser.open("https://drive.google.com/file/d/1chY19lL1cfdyw2H3kRXn5ywLuzCelGni/
view?usp=drivesdk")
webbrowser.open("https://drive.google.com/file/d/1caCLyRjK21HYJzEXnILLbLxNW5aIyD87/
view?usp=drivesdk")
if __name__ == "__main__":
app = App()
app.mainloop()