percept_simulator_2023/gui/gui_outputmode.py

103 lines
3 KiB
Python
Raw Permalink Normal View History

2023-07-31 15:23:38 +02:00
from gui.GUIMasterData import GUIMasterData
from gui.GUIMasterGUI import GUIMasterGUI
import tkinter as tk
from tkinter import ttk
class GUIOutputModeData(GUIMasterData):
enable_cam: bool = True
enable_yolo: bool = True
enable_contour: bool = True
enable_percept: bool = True
class GUIOutputModeGUI(GUIMasterGUI):
def __init__(
self,
tk_root: tk.Tk | tk.ttk.Labelframe | tk.ttk.Frame,
name: str = "Output Filter",
row_id: int = 0,
column_id: int = 3,
data_class=None,
) -> None:
super().__init__(
tk_root,
name=name,
row_id=row_id,
column_id=column_id,
data_class=data_class,
)
width_element: int = 10
width_label: int = 20
width_button_extra: int = 5
# option0 ->
self.option0_var = tk.IntVar()
self.option0_var.set(int(self.data.enable_cam))
self.option0 = ttk.Checkbutton(
self.frame,
text="CAM",
onvalue=1,
offvalue=0,
variable=self.option0_var,
command=self.selection_changed,
width=(width_label + width_element + width_button_extra),
)
self.option0.pack(anchor=tk.W)
# <- option0
# option1 ->
self.option1_var = tk.IntVar()
self.option1_var.set(int(self.data.enable_yolo))
self.option1 = ttk.Checkbutton(
self.frame,
text="YOLO",
onvalue=1,
offvalue=0,
variable=self.option1_var,
command=self.selection_changed,
width=(width_label + width_element + width_button_extra),
)
self.option1.pack(anchor=tk.W)
# <- option1
# option2 ->bool(self.option0_var.get())
self.option2_var = tk.IntVar()
self.option2_var.set(int(self.data.enable_contour))
self.option2 = ttk.Checkbutton(
self.frame,
text="Contour",
onvalue=1,
offvalue=0,
variable=self.option2_var,
command=self.selection_changed,
width=(width_label + width_element + width_button_extra),
)
self.option2.pack(anchor=tk.W)
# <- option2
# option3 ->
self.option3_var = tk.IntVar()
self.option3_var.set(int(self.data.enable_percept))
self.option3 = ttk.Checkbutton(
self.frame,
text="Percept",
onvalue=1,
offvalue=0,
variable=self.option3_var,
command=self.selection_changed,
width=(width_label + width_element + width_button_extra),
)
self.option3.pack(anchor=tk.W)
# <- option3
def selection_changed(self):
self.data.enable_cam = bool(self.option0_var.get())
self.data.enable_yolo = bool(self.option1_var.get())
self.data.enable_contour = bool(self.option2_var.get())
self.data.enable_percept = bool(self.option3_var.get())
self.data.data_changed = True