def __init__(self, parent): self.parent = parent self.parent.protocol("WM_DELETE_WINDOW", self.close_window) self.parent.title("PK2CMD Pickit2 UI") self.parent.geometry('600x250') self.parent.resizable(False, False) self.pk2cmd = PK2CMD(config_file_path) buttons = tk.Frame(parent) self.find_pic_btn = tk.Button(buttons, text="Find PIC", command=self.find_pic, state=tk.DISABLED) self.find_file_btn = tk.Button(buttons, text="Select HEX File", command=self.find_file, state=tk.DISABLED) self.upload_btn = tk.Button(buttons, text="Upload", command=self.upload, state=tk.DISABLED) self.find_pic_btn.pack(side=tk.TOP) self.find_file_btn.pack(side=tk.TOP) self.upload_btn.pack(side=tk.TOP) labels = tk.Frame(parent) pic_label = tk.Label(labels, text="Device id: ") hex_file_label = tk.Label(labels, text="HEX File: ") pic_label.pack(side=tk.TOP) hex_file_label.pack(side=tk.TOP) self.hex_file_path = "" info = tk.Frame(parent) self.device_id = tk.Label(info, text="-") self.hex_file = tk.Label(info, text="-") self.device_id.pack(side=tk.TOP) self.hex_file.pack(side=tk.TOP) status_frame = tk.Frame(parent) self.status = tk.Label(status_frame, text="") self.led = tk_tools.Led(status_frame, size=10) self.status.pack(side=tk.LEFT) self.led.pack(side=tk.RIGHT) buttons.pack(side=tk.TOP) labels.pack(side=tk.LEFT) info.pack(side=tk.RIGHT) status_frame.pack(side=tk.BOTTOM, fill=tk.X) self.usb_detector = USBDetector(self) if self.pk2cmd.is_connected: self.led.to_green(True) self.status['text'] = "Ready to detect device" else: self.led.to_red(True) self.status['text'] = "Connect PICKIT2" self.parent.mainloop()
def __init__(self, parent): self.parent = parent super().__init__(self.parent, text='Test Outputs') self.columnconfigure(0, weight=1) self.rowconfigure(0, weight=1) self.rowconfigure(1, weight=1) self.led = tk_tools.Led(self) self.led.to_green() self.led.grid(row=1, column=0, sticky='s')
def graph_frame(self): frame1 = tk.Frame(self, width=100, height=200) frame1.grid(row=0, column=0) canvas = FigureCanvasTkAgg(self.f, frame1) canvas.get_tk_widget().grid(row=2, column=0) #a numeric display of the standard deviation std_display = tk.Label(self, fg="dark green") std_display.grid(row=3, column=0, sticky='n') self.counter_label(std_display) #an indicator that shows green when the standard deviation in low enough led = tk_tools.Led(frame1, size=50) led.grid(row=3, column=0, sticky='s') self.change_led(led)
import tkinter as tk import tk_tools def on_click_callback(on): if on: print('led is on') else: print('led is off') if __name__ == '__main__': root = tk.Tk() led0 = tk_tools.Led(root, size=50, on_click_callback=on_click_callback) led0.pack() tk.Button(root, text='red', command=led0.to_red).pack(fill=tk.X) tk.Button(root, text='red on', command=lambda: led0.to_red(True)).pack(fill=tk.X) tk.Button(root, text='green', command=led0.to_green).pack(fill=tk.X) tk.Button(root, text='green on', command=lambda: led0.to_green(True)).pack(fill=tk.X) tk.Button(root, text='yellow', command=led0.to_yellow).pack(fill=tk.X) tk.Button(root, text='yellow on',
import tkinter as tk import tk_tools if __name__ == '__main__': root = tk.Tk() led = tk_tools.Led(root, size=50) led.pack() tk.Button(root, text='red', command=led.to_red).pack(fill=tk.X) tk.Button(root, text='red on', command=lambda: led.to_red(True)).pack(fill=tk.X) tk.Button(root, text='green', command=led.to_green).pack(fill=tk.X) tk.Button(root, text='green on', command=lambda: led.to_green(True)).pack(fill=tk.X) tk.Button(root, text='yellow', command=led.to_yellow).pack(fill=tk.X) tk.Button(root, text='yellow on', command=lambda: led.to_yellow(True)).pack(fill=tk.X) tk.Button(root, text='grey', command=led.to_grey).pack(fill=tk.X)
def create_widgets(self): global stop # Pack Voltage Gauge self.pvgauge = tk_tools.Gauge(self, height=200, width=400, min_value=10, max_value=20, label='Pack Voltage', unit=' V', divisions=30, yellow=66, red=70, yellow_low=43, red_low=40) #bg='grey') self.pvgauge.grid(row=0, column=5, rowspan=3, columnspan=3, sticky='news') # Speed Gauge self.spdgauge = tk_tools.Gauge(self, height=200, width=400, min_value=0, max_value=20, label='Speed', unit=' (kn)', divisions=20, yellow=50, red=70) #bg='grey') self.spdgauge.grid(row=0, column=2, rowspan=3, columnspan=3, sticky='news') #File Name Entry Box self.FiNaEn = Entry(self) self.FiNaEn.grid(row=1, column=0) #File name Label self.FiNaLa = Label(self, text="File name:") self.FiNaLa.grid(row=0, column=0, sticky='S') #Value Labels, Digits self.Mag_Compass_Label = Label(self, text="Mag Compass:"******"Target Heading:") self.Target_Heading_Label.grid(row=4, column=0, sticky='E') self.Target_Heading_Dig = tk_tools.SevenSegmentDigits( self, digits=10, background='black', digit_color='white', height=30) self.Target_Heading_Dig.grid(row=4, column=1, sticky='W', pady=4, ipady=2) self.GPS_Compass_Label = Label(self, text="GPS Compass:"******"Latitude:") self.Latitude_Label.grid(row=7, column=0, sticky='E') self.Latitude_Dig = tk_tools.SevenSegmentDigits(self, digits=10, background='black', digit_color='white', height=30) self.Latitude_Dig.grid(row=7, column=1, sticky='w', pady=4, ipady=2) self.Longitude_Label = Label(self, text="Longitude:") self.Longitude_Label.grid(row=8, column=0, sticky='E') self.Longitude_Dig = tk_tools.SevenSegmentDigits(self, digits=10, background='black', digit_color='white', height=30) self.Longitude_Dig.grid(row=8, column=1, sticky='w', pady=4, ipady=2) self.GPS_Speed_Label = Label(self, text="GPS Speed (kn):") self.GPS_Speed_Label.grid(row=9, column=0, sticky='E') self.GPS_Speed_Dig = tk_tools.SevenSegmentDigits(self, digits=10, background='black', digit_color='white', height=30) self.GPS_Speed_Dig.grid(row=9, column=1, sticky='w', pady=4, ipady=2) self.GPS_Distance_Label = Label(self, text="GPS Distance:") self.GPS_Distance_Label.grid(row=10, column=0, sticky='E') self.GPS_Distance_Dig = tk_tools.SevenSegmentDigits( self, digits=10, background='black', digit_color='white', height=30) self.GPS_Distance_Dig.grid(row=10, column=1, sticky='w', pady=4, ipady=2) #Jets Labels and Digits self.Port_Jet_Current_Label = Label(self, text="Port Jet Current:") self.Port_Jet_Current_Label.grid(row=3, column=2, sticky='NESW') self.Port_Jet_Current_Dig = tk_tools.SevenSegmentDigits( self, digits=10, background='black', digit_color='white', height=30) self.Port_Jet_Current_Dig.grid(row=4, column=2, sticky='NEWS', pady=4, ipady=2, padx=4, ipadx=2) self.Delta_Jet_Current_Label = Label(self, text="Jet Current Delta:") self.Delta_Jet_Current_Label.grid(row=3, column=3, sticky='NESW') self.Delta_Jet_Current_Dig = tk_tools.SevenSegmentDigits( self, digits=5, background='black', digit_color='white', height=30) self.Delta_Jet_Current_Dig.grid(row=4, column=3, sticky='NEWS', pady=4, ipady=2, padx=4, ipadx=2) self.Delta_Status_Led = tk_tools.Led(self, size=50) self.Delta_Status_Led.grid(row=5, column=3, sticky='NSEW', ipadx=10) self.Starboard_Jet_Current_Label = Label(self, text="Starboard Jet Current:") self.Starboard_Jet_Current_Label.grid(row=3, column=4, sticky='NESW') self.Starboard_Jet_Current_Dig = tk_tools.SevenSegmentDigits( self, digits=10, background='black', digit_color='white', height=30) self.Starboard_Jet_Current_Dig.grid(row=4, column=4, sticky='NEWS', pady=4, ipady=2, padx=4, ipadx=2) self.Log_Status_Led = tk_tools.Led(self, size=50) self.Log_Status_Led.grid(row=2, column=1, sticky='NSEW', ipadx=10) #Rotary Scale self.rs = tk_tools.RotaryScale(self, max_value=360, size=100, unit='deg') self.rs.grid(row=0, column=8, rowspan=3) #Start Log Button self.StLog = Button(self, text="Start Log", command=self.start_log) self.StLog.grid(row=2, column=0, sticky='N') self.Stop_Log = Checkbutton(self, text="Stop Logging", command=self.stop_log) self.Stop_Log.grid(row=0, column=1, sticky='N')
lbl_device_3 = builder.get_object('lbl_device_3') lbl_device_4 = builder.get_object('lbl_device_4') lbl_sldbar_4_value = builder.get_object('lbl_sldbar_4_value') canvas_1 = builder.get_object('canvas_1') canvas_2 = builder.get_object('canvas_2') canvas_3 = builder.get_object('canvas_3') pgsbar_1 = builder.get_object('pgsbar_1') pgsbar_2 = builder.get_object('pgsbar_2') pgsbar_3 = builder.get_object('pgsbar_3') sldbar_4 = builder.get_object('sldbar_4') r_sld_device1 = tk_tools.RotaryScale(canvas_1, max_value=255, size=99, img_data=tk_tools.images.rotary_gauge_bar) led_device2 = tk_tools.Led(canvas_2, size=99) led_device3 = tk_tools.Led(canvas_3, size=99) r_sld_device1.pack() led_device2.pack() led_device3.pack() frm_board_info = builder.get_object('frm_board_info') lbl_board_info = builder.get_object('lbl_board_info') txtbox_port = builder.get_object('txtbox_port') btn_port_set = builder.get_object('btn_port_set') frm_fasele = builder.get_object('frm_fasele') lbl_connection = builder.get_object('lbl_connection') lbl_connection_status = builder.get_object('lbl_connection_status') def btn_port_set_click(event):
import decodeData as dD LedNum = 18 GaugesNum = 8 PORT = "/dev/ttyACM0" ser = serial.Serial(PORT, 9600, timeout=2) window = tk.Tk() window.title("Arduino I/0") window.geometry('450x450') leds = [None] * LedNum for ii in range(LedNum): leds[ii] = tk_tools.Led(window, size=25) leds[ii].grid(row=ii // 4 + 2, column=ii % 4) gauges = [None] * GaugesNum for ii in range(GaugesNum): gauges[ii] = tk_tools.RotaryScale(window, max_value=100.0, size=100, unit='%') gauges[ii].grid(row=ii // 4, column=ii % 4) readFlag = True cnt = 1 while 1:
def _create_ui(self): self.g_port = None self.g_serial = None self.g_ser_rcv = "" self.g_ser_rcvstack = [] self.g_ser_to = 0 self.g_locked = False self.g_ser_active = False; self.g_valid = False self.g_ser_parsestring = "" self.g_lctable = [0, 1111, 1112, 1113, 1121, 1122, 1123, 1131, 1132, 1133, 1211, 1212, 1213, 1221, 1222, 1223, 1231, 1232, 1233, 1311, 1312, 1313, 1321, 1322, 1323, 1331, 1332, 1333, 2111, 2112, 2113, 2121, 2122, 2123, 2131, 2132, 2133, 2211, 2212, 2213, 2221, 2222, 2223, 2231, 2232, 2233, 2311, 2312, 2313, 2321, 2322, 2323, 2331, 2332, 2333, 3111, 3112, 3113, 3121, 3122, 3123, 3131, 3132, 3133, 3211, 3212, 3213, 3221, 3222, 3223, 3231, 3232, 3233, 3311, 3312, 3313, 3321, 3322, 3323, 3331, 3332, 3333] self.g_eedver = 0 self.g_eevver = 0 self.g_badver = False self.g_rdb_ver = '' self.g_rdb_body = '' self.g_ucode = 0 self.g_slotname = [] self.g_uid = [] self.g_pwd = [] self.g_dto = 0 self.g_ito = 0 self.g_lto = 0 self.g_flip = False self.g_revert = False self.g_logo = False self.g_bseq = 0 self.g_lseq = 0 self.g_kfail = 0 self.g_semas = '0000000000000000' self.g_sig = 'EFBEADDE' self.g_eedata = bytearray() self.g_wrbuf = '' self.builder = builder = pygubu.Builder() builder.add_from_file('ptconfig.ui') self.mainwindow = builder.get_object('mainwindow', self.master) self.mainmenu = menu = builder.get_object('mainmenu', self.master) self.set_menu(menu) self.mainlabel = builder.get_object('lmain', self.master) self.builder.tkvariables['strlmain'].set("PWT Configurator Version " + __VERSION__) self.verlabel = builder.get_object('lvarver', self.master) self.portcombo = builder.get_object('cport', self.master) self.portcombo['values'] = u_portlist self.portcombo.current(0) self.gencombo = builder.get_object('cmode', self.master) self.gencombo.current(2) self.builder.tkvariables['selen'].set('20') self.master.protocol("WM_DELETE_WINDOW", self.on_close_window) self.termbox = builder.get_object('tterm', self.master) self.eebox = builder.get_object('tee', self.master) self.msgbox = builder.get_object('tmessage', self.master) self.canvas = canvas = builder.get_object('cvled', self.master) self.led = led = tk_tools.Led(canvas, size=15) led.pack() led.to_red(on=True) self.pwframe = builder.get_object('fslots', self.master) builder.connect_callbacks(self) self.master.after(100, self.process_serial)
def widgeter(self): '''create remote panel widgets''' self.frame_right = Frame( self.parent, background='gray40') # create frame to hold button LEDs title_label_config = { 'background': 'gray40', 'font': ('verdana', 12, 'bold') } self.motors = Label(self.frame_right, title_label_config, text='Motor') self.motors.grid(column=0, row=0) # create motor labels motor_dict = { 1: 'Base', 2: 'Shoulder', 3: 'Elbow', 4: 'Wrist', 5: 'Gripper' } motor_lbl_config = { 'background': 'gray40', 'font': ('verdana', 12), 'foreground': 'black' } for key in motor_dict: Label(self.frame_right, motor_lbl_config, text=motor_dict[key]).grid(column=0, row=key, pady=12) self.position = Label(self.frame_right, title_label_config, text='Position(deg)') self.position.grid(column=1, row=0) # create labels to display the current motor position in degrees pos_config = { 'background': 'black', 'relief': RAISED, 'font': ('verdana', 12), 'foreground': 'lawngreen' } self.basePos = Label(self.frame_right, pos_config, text='20') self.shoulderPos = Label(self.frame_right, pos_config, text='30') self.elbowPos = Label(self.frame_right, pos_config, text='60') self.wristPos = Label(self.frame_right, pos_config, text='120') self.gripperPos = Label(self.frame_right, pos_config, text='50') self.basePos.grid(column=1, row=1, ipadx=20) self.shoulderPos.grid(column=1, row=2, ipadx=20) self.elbowPos.grid(column=1, row=3, ipadx=20) self.wristPos.grid(column=1, row=4, ipadx=20) self.gripperPos.grid(column=1, row=5, ipadx=20) # separator # ttk.Separator(self.frame_right, orient=HORIZONTAL).grid(sticky=N+E) self.frame_right.grid(column=0, row=0) # pack the right frame # create the middle frame self.frame_center = Frame(self.parent, background='gray40') #frequency display label self.freq_label = Label(self.frame_center, foreground='black', bg='gray40', font=('verdana', 12), text='Channel frequency:') self.freq_display = Entry(self.frame_center, fg='green') self.freq_display.insert(0, '300.5MHz') self.freq_display.grid(row=0, column=1) self.freq_label.grid(row=0, column=0) self.frame_center.grid(row=0, column=1, ipadx=10) self.frame_left = Frame(self.parent, background='gray40') # operation buttons btn_config = { 'background': 'black', 'foreground': 'red', 'font': ('verdana', 12, 'bold') } self.run = Button(self.frame_left, btn_config, text='RUN') self.stop = Button(self.frame_left, btn_config, text='STOP') self.exit = Button(self.frame_left, btn_config, text='EXIT') # pack the buttons self.run.grid(row=0, column=0, pady=15) self.stop.grid(row=1, column=0, pady=15) self.exit.grid(row=2, column=0, pady=15) self.frame_left.grid(column=2, row=0) # pack the left frame # status bar self.status_bar = Frame(self.parent, bg='gray40') # create LED self.running_led = tools.Led(self.status_bar, size=50) self.running_led.to_green() self.running_led.grid(row=0, column=0) self.stat_lbl = Label(self.status_bar, text='Running', font=('consolas', 12, 'bold'), bg='gray40', fg='green') self.stat_lbl.grid(row=0, column=1, ipadx=15) self.status_bar.grid(row=1, column=0)
def initialize_led(self): return self.led = tk_tools.Led(self.gui, size=50) self.led.pack()
#Combobox combo_frame = LabelFrame(mainframe) combo_frame.place(x=20, y=20, width=340, height=60) update_combobox_list() #init download_combobox = ttk.Combobox(combo_frame, postcommand=update_combobox_list) download_combobox.set("Bitte Logbuch Download Auswählen..") download_combobox.bind("<<ComboboxSelected>>", display_combobox_list_select_action) download_combobox.place(x=5, y=10, width=325, height=30) ## #Download LED led_frame = LabelFrame(mainframe, text="Download Status") led_frame.place(x=20, y=90, width=340, height=140) led = tk_tools.Led(led_frame, size=100) led.place(x=108, y=5, width=102, height=102) ## #Status pane label_act_entry_frame = LabelFrame(mainframe, text="Aktueller Status") label_act_entry_frame.place(x=20, y=240, width=340, height=110) actEntry = StringVar() label_actEntry = ttk.Label(label_act_entry_frame, textvariable=actEntry) label_actEntry.place(x=5, y=10, width=300, height=20) progress = ttk.Progressbar(label_act_entry_frame, orient=HORIZONTAL, mode='determinate') progress.place(x=10, y=40, width=315, height=30) ##
def __init__(self, parent, colour_map): Frame.__init__(self, parent) self.colour_map = colour_map self.colour_name = StringVar() self.change_start_date_time = StringVar() self.colour_start_date_time = StringVar() self.colour_end_date_time = StringVar() self.colour_label = Label(self, text="Color", anchor="center") self.colour_label.grid(row=0, column=0, padx=(0, CELL_PADDING), pady=(0, CELL_PADDING), ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.colour_entry = Entry(self, justify="center", validate="key", validatecommand=(self.register(self.__validate_colour_input), '%P')) self.colour_entry.grid(row=1, column=0, padx=(0, CELL_PADDING), pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.led_colour = tk_tools.Led(self, size=30) self.led_colour.grid(row=2, column=0) self.led_colour.to_grey(on=True) self.grid_columnconfigure(0, weight=1) # La fila toma el ancho de pantalla self.colour_name_label = Label(self, textvariable=self.colour_name, anchor="center", relief="groove") self.colour_name_label.grid(row=3, column=0, padx=(0, CELL_PADDING), pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.change_start_time_button = Button(self, text="Hora inicio cambio", state=NORMAL, command=self.__on_change_start_time_click) self.change_start_time_button.grid(row=0, column=1, padx=CELL_PADDING, pady=(0, CELL_PADDING), ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.change_start_time_label = Label(self, background="white", textvariable=self.change_start_date_time) self.change_start_time_label.grid(row=1, column=1, padx=CELL_PADDING, pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.led_change_start_time = tk_tools.Led(self, size=30) self.led_change_start_time.grid(row=2, column=1) self.led_change_start_time.to_grey(on=True) self.grid_columnconfigure(1, weight=1) self.colour_start_time_button = Button(self, text="Hora inicio color", state=DISABLED, command=self.__on_colour_start_time_click) self.colour_start_time_button.grid(row=0, column=2, padx=CELL_PADDING, pady=(0, CELL_PADDING), ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.colour_start_time_label = Label(self, background="white", textvariable=self.colour_start_date_time) self.colour_start_time_label.grid(row=1, column=2, padx=CELL_PADDING, pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.led_colour_start_time = tk_tools.Led(self, size=30) self.led_colour_start_time.grid(row=2, column=2) self.led_colour_start_time.to_grey(on=True) self.grid_columnconfigure(2, weight=1) self.colour_end_time_button = Button(self, text="Hora final color", state=DISABLED, command=self.__on_colour_end_time_click) self.colour_end_time_button.grid(row=0, column=3, padx=CELL_PADDING, pady=(0, CELL_PADDING), ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.colour_end_time_label = Label(self, background="white", textvariable=self.colour_end_date_time) self.colour_end_time_label.grid(row=1, column=3, padx=CELL_PADDING, pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.led_colour_end_time = tk_tools.Led(self, size=30) self.led_colour_end_time.grid(row=2, column=3) self.led_colour_end_time.to_grey(on=True) self.grid_columnconfigure(3, weight=1) self.hangers_label = Label(self, text="Nº de bastidores", anchor="center") self.hangers_label.grid(row=0, column=4, padx=CELL_PADDING, pady=(0, CELL_PADDING), ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.hangers_entry = Entry(self, justify="center", validate="key", validatecommand=(self.register(self.__validate_hangers_input), '%P', '%S')) self.hangers_entry.grid(row=1, column=4, padx=CELL_PADDING, pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.led_hangers = tk_tools.Led(self, size=30) self.led_hangers.grid(row=2, column=4) self.led_hangers.to_grey(on=True) self.grid_columnconfigure(4, weight=1) self.observations_label = Label(self, text="Observaciones", anchor="center") self.observations_label.grid(row=0, column=5, padx=CELL_PADDING, pady=(0, CELL_PADDING), ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.observations_entry = Entry(self, justify="center", validate="key", validatecommand=(self.register(self.__validate_observations_input), '%P',), state=NORMAL) self.observations_entry.grid(row=1, column=5, padx=CELL_PADDING, pady=CELL_PADDING, ipadx=CELL_MARGIN, ipady=CELL_MARGIN, sticky=W + E + N + S) self.led_observations = tk_tools.Led(self, size=30) self.led_observations.grid(row=2, column=5) self.led_observations.to_grey(on=True) self.grid_columnconfigure(5, weight=2)
def create_widgets(self): self.tank_pressure_label = tk.Label(self, font='TimesNewRoman 14', text="Tank pressure:") self.tank_pressure_label.grid( row=30, column=2, ) self.tank_pressure_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=5, height=1) self.tank_pressure_data.grid( row=30, column=3, ) self.input_pressure_label = tk.Label(self, font='TimesNewRoman 14', text="Inlet pressure:") self.input_pressure_label.grid( row=31, column=2, ) self.input_pressure_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=5, height=1) self.input_pressure_data.grid( row=31, column=3, ) self.air_pressure_label = tk.Label(self, font='TimesNewRoman 14', text="Air pressure:") self.air_pressure_label.grid( row=32, column=2, ) self.air_pressure_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=5, height=1) self.air_pressure_data.grid( row=32, column=3, ) self.oxygen_pressure_label = tk.Label(self, font='TimesNewRoman 14', text="Oxygen pressure:") self.oxygen_pressure_label.grid( row=33, column=2, ) self.oxygen_pressure_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=5, height=1) self.oxygen_pressure_data.grid( row=33, column=3, ) self.breathing_pressure_label = tk.Label(self, font='TimesNewRoman 14', text="Breathing pressure:") self.breathing_pressure_label.grid( row=34, column=2, ) self.breathing_pressure_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=5, height=1) self.breathing_pressure_data.grid( row=34, column=3, ) self.flow_label = tk.Label(self, font='TimesNewRoman 14', text="Flow:") self.flow_label.grid( row=35, column=2, ) self.flow_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=5, height=1) self.flow_data.grid( row=35, column=3, ) self.led = tk_tools.Led(self, size=50) self.led.grid( row=37, column=2, ) self.led.to_red() self.led_data = tk.Text(self, wrap='word', font='TimesNewRoman 14', bg=self.cget('bg'), relief='flat', width=20, height=1) self.led_data.grid( row=36, column=2, ) self.gauge_tank = tk_tools.Gauge(self, max_value=150.0, label='Pressure', unit='PSI', bg='white') self.gauge_tank.grid(row=31, column=4) self.tank_label = tk.Label(self, font='TimesNewRoman 14', text="Tank Pressure") self.tank_label.grid(row=32, column=4) self.gauge_air = tk_tools.Gauge(self, max_value=1024.0, label='Pressure', unit='cmH2O', bg='white') self.gauge_air.grid(row=31, column=5) self.air_label = tk.Label(self, font='TimesNewRoman 14', text="Air Pressure") self.air_label.grid(row=32, column=5) self.gauge_oxygen = tk_tools.Gauge(self, max_value=1024.0, label='Pressure', unit='cmH2O', bg='white') self.gauge_oxygen.grid(row=31, column=6) self.oxygen_label = tk.Label(self, font='TimesNewRoman 14', text="Oxygen Pressure") self.oxygen_label.grid(row=32, column=6) self.gauge_breath = tk_tools.Gauge(self, max_value=1024.0, label='Pressure', unit='cmH2O', bg='white') self.gauge_breath.grid(row=31, column=7) self.breath_label = tk.Label(self, font='TimesNewRoman 14', text="Breath Pressure") self.breath_label.grid(row=32, column=7) self.slider_volume = tk.Scale(self, from_=255, to=0, length=300, resolution=1, troughcolor='blue', fg='red', label='Volume (ml)', width=35) self.slider_volume.set(0) self.slider_volume.grid( row=35, column=4, ) self.slider_bpm = tk.Scale(self, from_=30, to=5, length=300, resolution=1, troughcolor='blue', fg='red', label='BPM', width=35) self.slider_bpm.set(12) self.slider_bpm.grid( row=35, column=5, ) self.slider_o = tk.Scale(self, from_=100, to=1, length=300, resolution=1, troughcolor='blue', fg='red', label='Oxygen (%)', width=35) self.slider_o.set(21) self.slider_o.grid( row=35, column=6, ) self.slider_ratio = tk.Scale(self, from_=3, to=1, length=300, resolution=1, troughcolor='blue', fg='red', label='I:E Ratio', width=35) self.slider_ratio.set(1) self.slider_ratio.grid( row=35, column=7, ) self.slider_alarm = tk.Scale(self, from_=50, to=10, length=300, resolution=1, troughcolor='blue', fg='red', label='Presure Alarm', width=35) self.slider_alarm.set(30) self.slider_alarm.grid( row=35, column=8, ) self.send_button = tk.Button(self, text="Start with selected parameters", command=self.send_data, height=2, width=25, fg='black') self.send_button.grid(row=37, column=6) self.t2 = threading.Thread(target=self.populate_data, name='t2') self.t2.start()