Skip to content

Commit

Permalink
Create prototype2.py
Browse files Browse the repository at this point in the history
Added functionality from the original prototype.py

User can dynamically create number of pins and select associated values.

Values are stored in a dictionary for later logic to be implimented.
  • Loading branch information
brr17009 authored Oct 29, 2024
1 parent 6968721 commit 96b24cd
Showing 1 changed file with 84 additions and 0 deletions.
84 changes: 84 additions & 0 deletions SDPPython/prototype2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import tkinter as tk
from tkinter import ttk

# Dictionary to store dropdown variables for each pin
dropdown_vars = {}

def option_selected(pin_num):
print(f"Selected for Pin {pin_num}: {dropdown_vars[pin_num].get()}")

def generate_pin_fields():
try:
num_pins = int(pin_entry.get())

# Clears pin fields if any
for widget in pin_canvas_frame.winfo_children():
widget.destroy()

# Generates the fields for each pin
for i in range(1, num_pins + 1):
tk.Label(pin_canvas_frame, text=f"Pin {i}").grid(row=i, column=0, padx=5, pady=5)

dropdown_var = tk.StringVar()
dropdown_vars[i] = dropdown_var # Store variable for each pin in dict

dropdown = ttk.Combobox(pin_canvas_frame, textvariable=dropdown_var, state="readonly")
dropdown['values'] = ('Analog In', 'Analog Out', 'Digital In', 'Digital Out') # Options for dropdown,
dropdown.grid(row=i, column=1, padx=5, pady=5)
dropdown.bind("<<ComboboxSelected>>", lambda e, pin_num=i: option_selected(pin_num))

pin_canvas_frame.update_idletasks()
pin_canvas.config(scrollregion=pin_canvas.bbox("all"))

except ValueError:
display_label.config(text="Please enter a valid number of pins.", fg="red")

def show_circuit_works():
display_label.config(text="Circuit works", fg="green")

def show_circuit_not_work():
display_label.config(text="Circuit does not work", fg="red")

root = tk.Tk()
root.title("Circuit GUI Prototype")

# Input for the number of pins
pin_label = tk.Label(root, text="Number of Pins:")
pin_label.grid(row=0, column=0, padx=10, pady=10)
pin_entry = tk.Entry(root)
pin_entry.grid(row=0, column=1, padx=10, pady=10)

generate_button = tk.Button(root, text="Generate Pins", command=generate_pin_fields)
generate_button.grid(row=0, column=2, padx=10, pady=10)

# Frame to hold the canvas and scrollbar
container = tk.Frame(root)
container.grid(row=1, column=0, columnspan=3, padx=10, pady=10)

pin_canvas = tk.Canvas(container, width=300, height=400)
pin_canvas.grid(row=0, column=0)

# Scrollbar for the canvas
scrollbar = tk.Scrollbar(container, orient="vertical", command=pin_canvas.yview)
scrollbar.grid(row=0, column=1, sticky="ns")
pin_canvas.config(yscrollcommand=scrollbar.set)

# Frame inside the canvas to hold pin fields
pin_canvas_frame = tk.Frame(pin_canvas)
pin_canvas.create_window((0, 0), window=pin_canvas_frame, anchor="nw")

# Display label
display_label = tk.Label(root, text="", font=("Arial", 14))
display_label.grid(row=2, column=0, columnspan=3, padx=10, pady=10)

# Buttons
button1 = tk.Button(root, text="Circuit Works", command=show_circuit_works)
button1.grid(row=3, column=0, padx=10)

button2 = tk.Button(root, text="Circuit Does Not Work", command=show_circuit_not_work)
button2.grid(row=3, column=1, padx=10)

button3 = tk.Button(root, text="Button 3")
button3.grid(row=3, column=2, padx=10)

root.mainloop()

0 comments on commit 96b24cd

Please sign in to comment.