-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
Showing
1 changed file
with
84 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |