def launch_all(scratch_file=SCRATCH_PATH + "new.sb"): ''' This method can be called when importing Scratch_Start.py. It launches both Scratch and the appropriate Scratch Controller. If scratch_file parameter is passed, then it will be loaded in Scratch. scratch_file must have a full path, and not a relative path ''' global scratch_controller # Kill all Python Programs. Any running *Scratch* Python Programs. write_debug("Start robot.") # dlg = wx.MessageDialog(self, 'This will close any open Scratch programs. Please save and click Ok!', 'Alert!', wx.OK|wx.ICON_INFORMATION) # dlg.ShowModal() # dlg.Destroy() kill_all_open_processes() # Start Scratch start_command = "bash {0}scratch_direct {1}".format( SCRATCH_PATH, scratch_file) print("Launched Scratch") print(start_command) user_selection = read_state() if user_selection.find('BrickPi') >= 0: if auto_detect_robot.autodetect().find("BrickPi3") >= 0: program = "/home/pi/Dexter/BrickPi3/Software/Scratch/BrickPi3Scratch.py" else: #BrickPi+, Kickstarter and Advanced, program = "/home/pi/Dexter/BrickPi+/Software/BrickPi_Scratch/BrickPiScratch.py" elif user_selection.find('GoPiGo') >= 0: if auto_detect_robot.autodetect().find("GoPiGo3") >= 0: program = "/home/pi/Dexter/GoPiGo3/Software/Scratch/GoPiGo3Scratch.py" else: program = "/home/pi/Dexter/GoPiGo/Software/Scratch/GoPiGoScratch.py" elif user_selection.find('PivotPi') >= 0: program = "/home/pi/Dexter/PivotPi/Software/Scratch/PivotPiScratch.py" else: program = "/home/pi/Dexter/GrovePi/Software/Scratch/GrovePiScratch.py" # start_command = "sudo python "+program # send_bash_command_in_background(start_command) param = [] param.append('lxterminal') param.append('--title') param.append('Scratch Controller') param.append('-e') param.append("/usr/bin/python") param.append(program) scratch_controller = subprocess.Popen(param) send_bash_command_in_background(start_command) print("Programming Started.")
def detect(): try: detected_robots = auto_detect_robot.autodetect() print(detected_robots) # handling it this way to cover the cases of # multiple robot detection if detected_robots.find("GoPiGo") == 0: write_state("GoPiGo") elif detected_robots.find("BrickPi3") == 0: write_state("BrickPi3") elif detected_robots.find("GrovePi") == 0: write_state("GrovePi") else: write_state('sig') except: write_state("sig")
def detect(): try: detected_robots=auto_detect_robot.autodetect() print (detected_robots) # handling it this way to cover the cases of # multiple robot detection if needed_robots.find("GoPiGo3") != -1: write_state("GoPiGo3") elif detected_robots.find("GoPiGo") != -1 and needed_robots.find("3") == -1: write_state("GoPiGo") elif detected_robots.find("BrickPi3")==0: write_state("BrickPi3") elif detected_robots.find("GrovePi")==0: write_state("GrovePi") else: write_state('dex') except: write_state("dex")
def detect(): try: detected_robots=auto_detect_robot.autodetect() print (detected_robots) # handling it this way to cover the cases of # multiple robot detection if detected_robots.find("GoPiGo3") != -1: write_state("GoPiGo3") elif detected_robots.find("GoPiGo") != -1 and detected_robots.find("3") == -1: write_state("GoPiGo") elif detected_robots.find("BrickPi3")==0: write_state("BrickPi3") elif detected_robots.find("GrovePi")==0: write_state("GrovePi") else: write_state('dex') except Exception as e: write_state("dex") print(e)
def examples(self, event): write_debug("Examples Pressed.") # autodetect robots and pick the first one folder = auto_detect_robot.autodetect().split("-")[0] if (folder == "GoPiGo3"): directory = "nohup pcmanfm /home/pi/Dexter/GoPiGo3/Software/Scratch/Examples/" if (folder == "GoPiGo"): directory = "nohup pcmanfm /home/pi/Dexter/GoPiGo/Software/Scratch/Examples/" if (folder == "GrovePi"): directory = "nohup pcmanfm /home/pi/Dexter/GrovePi/Software/Scratch/Grove_Examples/" if (folder == "BrickPi+"): directory = "nohup pcmanfm /home/pi/Dexter/BrickPi+/Software/BrickPi_Scratch/Examples/" if (folder == "BrickPi3"): directory = "nohup pcmanfm /home/pi/Dexter/BrickPi3/Software/Scratch/Examples/" if (folder == "PivotPi"): directory = "nohup pcmanfm /home/pi/Dexter/PivotPi/Software/Scratch/Examples/" send_bash_command_in_background(directory) print("Opened up file manager") write_debug("Opened up file manager!")
def initialize(self): sizer = wx.GridBagSizer() x = 75 y = 175 dist = 60 # Otomatik algılayabilirsek, kullanıcıya geribildirim verir if no_auto_detect == False: detected_robot = auto_detect_robot.autodetect() if detected_robot != "GoPiGo": detected_robot_str = wx.StaticText( self, -1, label="Warning: Could not find a GoPiGo", pos=(x - 30 + dist * 2, 4)) detected_robot_str.SetForegroundColour('red') sizer.AddStretchSpacer((1, 1)) sizer.Add(detected_robot_str, (0, 1)) sizer.AddStretchSpacer((1, 1)) # Hareket butonları left_button = wx.Button(self, -1, label="Left", pos=(x, y)) sizer.Add(left_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, -1, label="Stop", pos=(x + dist * 2, y)) stop_button.SetBackgroundColour('red') sizer.Add(stop_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, -1, label="Right", pos=(x + dist * 4, y)) sizer.Add(right_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) fwd_button = wx.Button(self, -1, label="Forward", pos=(x + dist * 2, y - dist)) sizer.Add(fwd_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) bwd_button = wx.Button(self, -1, label="Back", pos=(x + dist * 2, y + dist)) sizer.Add(bwd_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) # Led buttonları x = 75 y = 25 left_led_button = wx.Button(self, -1, label="Left LED", pos=(x, y)) sizer.Add(left_led_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, -1, label="Right LED", pos=(x + dist * 4, y)) sizer.Add(right_led_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) y = 320 battery_button = wx.Button(self, -1, label="Check Battery Voltage\t ", pos=(x, y)) sizer.Add(battery_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) firmware_button = wx.Button(self, -1, label="Check Firmware Version\t", pos=(x, y + dist / 2)) sizer.Add(firmware_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) self.battery_label = wx.StaticText(self, -1, label=str(v) + "V", pos=(x + dist * 2 + 45, y + 6)) sizer.Add(self.battery_label, (1, 0), (1, 2), wx.EXPAND) self.firmware_label = wx.StaticText(self, -1, label=str(f), pos=(x + dist * 2 + 45, y + 6 + dist / 2)) sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND) self.trim_label = wx.StaticText( self, -1, label= "You can adjust the trim of your GoPiGo to help it go straight forward.\nUse the slider below to adjust the trim difference between the left\nand right motors.", pos=(x, y + 6 + dist / 2 + 40)) sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND) y = 460 self.trim_label = wx.StaticText(self, -1, label=str(trim_val), pos=(x + dist * 2, y + 6)) sizer.Add(self.trim_label, (1, 0), (1, 2), wx.EXPAND) trim_read_button = wx.Button(self, -1, label=" Trim Read ", pos=(x, y)) sizer.Add(trim_read_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick, trim_read_button) trim_test_button = wx.Button(self, -1, label="Trim Test ", pos=(x, y + dist / 2)) sizer.Add(trim_test_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick, trim_test_button) trim_write_button = wx.Button(self, -1, label="Trim Write", pos=(x, y + dist)) sizer.Add(trim_write_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick, trim_write_button) self.slider = wx.Slider(self, value=0, minValue=-100, maxValue=100, pos=(x + dist * 2, y + dist / 2), size=(250, -1), style=wx.SL_HORIZONTAL) self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll) self.Show(True)
def test(self, event): # Test the hardware. Test the selected hardware. write_debug("Demo robot.") folder = auto_detect_robot.autodetect() print("Preparing demo mode for {}".format(folder)) if folder.find('BrickPi') >= 0: if auto_detect_robot.autodetect().find("BrickPi+"): # Run BrickPi+ Test. dlg = wx.MessageDialog( self, 'Ok, start BrickPi+ Test. Make sure the BrickPi+ is powered by batteries, a motor is connected, and a touch sensor is connected to Port 1. You should see the LEDs blink and the motors move when the touch sensor is pressed. Then press Ok. ', 'Test BrickPi+!', wx.OK | wx.CANCEL | wx.ICON_INFORMATION) ran_dialog = False if dlg.ShowModal() == wx.ID_OK: print("Run Hardware Test!") program = "sudo python /home/pi/Dexter/BrickPi+/Software/BrickPi_Python/Sensor_Examples/BrickPi_Hardware_Test.py" send_bash_command_in_background(program) ran_dialog = True else: print("Canceled!") dlg.Destroy() else: # Run BrickPi3 Test. dlg = wx.MessageDialog( self, 'Ok, start BrickPi3 Test. Make sure the BrickPi3 is powered by batteries, a motor is connected, and a touch sensor is connected to Port 1. You should see the LEDs blink and the motors move when the touch sensor is pressed. Then press Ok. ', 'Test BrickPi3!', wx.OK | wx.CANCEL | wx.ICON_INFORMATION) ran_dialog = False if dlg.ShowModal() == wx.ID_OK: print("Run Hardware Test.") program = "sudo python /home/pi/Dexter/BrickPi3/Software/Python/Sensor_Examples/Brick_Hardware_Test.py" send_bash_command_in_background(program) ran_dialog = True else: print("Canceled!") dlg.Destroy() # Depending on what the user chose, we either cancel or complete. if ran_dialog: dlg = wx.MessageDialog(self, 'Test Complete.', 'Complete', wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() else: dlg = wx.MessageDialog(self, 'Test Canceled.', 'Canceled', wx.OK | wx.ICON_HAND) dlg.ShowModal() dlg.Destroy() elif folder.find("GoPiGo3") >= 0: # Run GoPiGo Test. dlg = wx.MessageDialog( self, 'This Demo program will make sure everything is working on your GoPiGo. It is best to be working through wifi, but if the GoPiGo is connected to your computer with a cable right now, turn it upside down for the demo. \n\nClick OK to begin.', 'Demonstrate the GoPiGo', wx.OK | wx.CANCEL | wx.ICON_INFORMATION) ran_dialog = False if dlg.ShowModal() == wx.ID_OK: print("Begin Running GoPiGo3 Test!") program = "python /home/pi/Dexter/GoPiGo3/Software/Python/hardware_test.py" send_bash_command_in_background(program) ran_dialog = True else: print("Canceled.") dlg.Destroy() pass elif folder.find('GoPiGo') >= 0: # Run GoPiGo Test. dlg = wx.MessageDialog( self, 'This Demo program will make sure everything is working on your GoPiGo. The red LEDs in the front of the GoPiGo will blink once, and the GoPiGo will move forward, and then backwards. So make sure it is on the floor so it does not fall off the table! \n\nMake sure your batteries are connected to the GoPiGo, motors are connected, and it is turned on. Be sure to unplug the power supply wall adapter from the GoPiGo. It is best to be working through wifi, but if the GoPiGo is connected to your computer with a cable right now, turn it upside down for the demo. \n\nClick OK to begin.', 'Demonstrate the GoPiGo', wx.OK | wx.CANCEL | wx.ICON_INFORMATION) ran_dialog = False if dlg.ShowModal() == wx.ID_OK: print("Begin Running GoPiGo Test.") program = "sudo python /home/pi/Dexter/GoPiGo/Software/Python/hardware_test_2.py" send_bash_command_in_background(program) ran_dialog = True else: print("Canceled.") dlg.Destroy() # Depending on what the user chose, we either cancel or complete. if ran_dialog: dlg = wx.MessageDialog(self, 'Demo Complete', 'Complete', wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() else: dlg = wx.MessageDialog(self, 'Demo Canceled', 'Canceled', wx.OK | wx.ICON_HAND) dlg.ShowModal() dlg.Destroy() elif folder.find('GrovePi') >= 0: # Run GrovePi Test. dlg = wx.MessageDialog( self, 'Ok, start GrovePi Test. Attach buzzer to D8 and a button to A0. Press the button and the buzzer should sound. Press Ok to start. ', 'Test GrovePi!', wx.OK | wx.CANCEL | wx.ICON_INFORMATION) ran_dialog = False if dlg.ShowModal() == wx.ID_OK: print("Run GrovePi Test.") program = "sudo python /home/pi/Dexter/GrovePi/Software/Python/GrovePi_Hardware_Test.py" send_bash_command_in_background(program) ran_dialog = True else: print("Canceled") dlg.Destroy() # Depending on what the user chose, we either cancel or complete. if ran_dialog: dlg = wx.MessageDialog(self, 'Test Complete', 'Complete', wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() else: dlg = wx.MessageDialog(self, 'Test Canceled', 'Canceled', wx.OK | wx.ICON_HAND) dlg.ShowModal() dlg.Destroy()
panel = MainPanel(self) self.Center() ######################################################################## class Main(wx.App): """""" #---------------------------------------------------------------------- def __init__(self, redirect=False, filename=None): """Constructor""" wx.App.__init__(self, redirect, filename) dlg = MainFrame() dlg.Show() #---------------------------------------------------------------------- if __name__ == "__main__": write_debug(" # Program # started # !") write_state(auto_detect_robot.autodetect()) #write_state("GoPiGo") kill_all_open_processes() if len(sys.argv) == 1: app = Main() app.MainLoop() else: print(sys.argv[1]) launch_all(sys.argv[1])
def __init__(self, parent): wx.Panel.__init__(self, parent=parent) #self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.SetBackgroundColour(wx.WHITE) self.frame = parent title_font = wx.Font(15, wx.FONTSTYLE_NORMAL, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD) title_font.SetUnderlined(False) small_font = wx.Font(10, wx.FONTSTYLE_NORMAL, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD) small_font.SetUnderlined(False) # main sizer main_sizer = wx.BoxSizer(wx.VERTICAL) # Two horizontal sections top_sizer = wx.BoxSizer(wx.HORIZONTAL) bottom_sizer = wx.BoxSizer(wx.HORIZONTAL) # top has two vertical sections control_sizer = wx.BoxSizer(wx.VERTICAL) vital_signs_sizer = wx.BoxSizer(wx.VERTICAL) # bottom has just one section calibration_sizer = wx.BoxSizer(wx.VERTICAL) if no_auto_detect == True: detected_robot = auto_detect_robot.autodetect() print(detected_robot) if detected_robot != "GoPiGo3": detected_robot_str = wx.StaticText( self, -1, label="Warning: Could not find a GoPiGo3") detected_robot_str.SetForegroundColour('red') warning_sizer = wx.BoxSizer(wx.HORIZONTAL) warning_sizer.Add(detected_robot_str, 0, wx.EXPAND | wx.ALIGN_CENTER) main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER) # Remote Control control_label = wx.StaticText(self, -1, label="Remote Control:") control_label.SetFont(title_font) left_led_button = wx.Button(self, label="Left Blinker") self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, label="Right Blinker") self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) led_sizer = wx.BoxSizer(wx.HORIZONTAL) led_sizer.Add(left_led_button, 0, wx.ALIGN_LEFT | wx.TOP, 9) led_sizer.AddSpacer(70) led_sizer.Add(right_led_button, 0, wx.ALIGN_RIGHT | wx.TOP, 9) eyes_sizer = wx.BoxSizer(wx.HORIZONTAL) left_eye_button = wx.Button(self, label="Left Eye ") self.Bind(wx.EVT_BUTTON, self.left_eye_button_OnButtonClick, left_eye_button) bmp = wx.Bitmap(ICON_PATH + "dex.png", type=wx.BITMAP_TYPE_PNG) robotbitmap = wx.StaticBitmap(self, bitmap=bmp) right_eye_button = wx.Button(self, label="Right Eye") self.Bind(wx.EVT_BUTTON, self.right_eye_button_OnButtonClick, right_eye_button) eyes_sizer.Add(right_eye_button, 0, wx.ALIGN_CENTER) eyes_sizer.Add(robotbitmap, 0, wx.ALIGN_CENTER) eyes_sizer.Add(left_eye_button, 0, wx.ALIGN_CENTER) fwd_sizer = wx.BoxSizer(wx.HORIZONTAL) fwd_button = wx.Button(self, label="Forward") self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER) middle_sizer = wx.BoxSizer(wx.HORIZONTAL) left_button = wx.Button(self, label="Left") self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, label="Stop") stop_button.SetForegroundColour('red') self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, label="Right") self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER) middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER) middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER) bwd_sizer = wx.BoxSizer(wx.HORIZONTAL) bwd_button = wx.Button(self, label="Back") self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) bwd_sizer.Add(bwd_button, 0, wx.ALIGN_CENTER) # Vital Signs Values vital_signs_label = wx.StaticText(self, -1, label="Vital Signs:") vital_signs_label.SetFont(title_font) batterySizer = wx.BoxSizer(wx.HORIZONTAL) battery_button = wx.Button(self, label="Check Battery Voltage") self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) self.battery_label = wx.StaticText(self, label=str(round(v, 1)) + "V") batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT) batterySizer.AddSpacer(22) batterySizer.Add(self.battery_label, 0, wx.ALIGN_CENTER | wx.EXPAND) firmwareSizer = wx.BoxSizer(wx.HORIZONTAL) firmware_button = wx.Button(self, -1, label="Check Firmware Version") self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) self.firmware_label = wx.StaticText(self, -1, label=str(firmware_version)) firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT) firmwareSizer.AddSpacer(15) firmwareSizer.Add(self.firmware_label, 0, wx.ALIGN_CENTER | wx.EXPAND) calibration_label = wx.StaticText(self, -1, label="Driving Calibration:") calibration_label.SetFont(title_font) calibrationDriveSizer = wx.BoxSizer(wx.VERTICAL) # drive_straight_label = [] # for i in range(len(calibration_straigt_line)): # number of lines of instructions # drive_straight_label.append(wx.StaticText(self, -1,label=calibration_straigt_line[i])) # drive_straight_label[i].SetFont(small_font) # calibrationDriveSizer.Add(drive_straight_label[i], 0, wx.ALIGN_LEFT) calibrationDriveInternalSizer = wx.BoxSizer(wx.HORIZONTAL) wheel_diameter_label = wx.StaticText(self, -1, label="Wheel Diameter:") self.wheel_diameter_input = wx.TextCtrl(self, value=str(wheel_diameter), size=(60, 40)) # self.Bind(wx.EVT_TEXT, self.wheel_diameter_input_OnChanged, self.wheel_diameter_input) calibrationDriveInternalSizer.Add(wheel_diameter_label, 0, wx.ALIGN_CENTER) calibrationDriveInternalSizer.Add(self.wheel_diameter_input, 0, wx.ALIGN_CENTER | wx.EXPAND) calibrationDriveInternalSizer.AddSpacer(15) drive_straight_2m_button = wx.Button(self, -1, label="Drive 2m") self.Bind(wx.EVT_BUTTON, self.drive_straight_2m_button_OnButtonClick, drive_straight_2m_button) drive_straight_6feet_button = wx.Button(self, -1, label="Drive 6 feet") self.Bind(wx.EVT_BUTTON, self.drive_straight_6feet_button_OnButtonClick, drive_straight_6feet_button) calibrationDriveInternalSizer.Add(drive_straight_2m_button, 0, wx.ALIGN_CENTER | wx.EXPAND) calibrationDriveInternalSizer.AddSpacer(15) calibrationDriveInternalSizer.Add(drive_straight_6feet_button, 0, wx.ALIGN_CENTER | wx.EXPAND) calibrationDriveSizer.Add(calibrationDriveInternalSizer, 0, wx.ALIGN_LEFT) calibrationTurnSizer = wx.BoxSizer(wx.VERTICAL) # turn_straight_label = [] # for i in range(len(calibration_turn)): # number of lines of instructions # turn_straight_label.append(wx.StaticText(self, -1, label=calibration_turn[i])) # turn_straight_label[i].SetFont(small_font) # calibrationTurnSizer.Add(turn_straight_label[i], 0, wx.ALIGN_LEFT) calibrationTurnInternalSizer = wx.BoxSizer(wx.HORIZONTAL) wheel_base_label = wx.StaticText(self, -1, label="Distance Between Wheels:") self.wheel_base_input = wx.TextCtrl(self, value=str(wheel_base_width), size=(60, 40)) calibrationTurnInternalSizer.Add(wheel_base_label, 0, wx.ALIGN_CENTER) calibrationTurnInternalSizer.Add(self.wheel_base_input, 0, wx.ALIGN_CENTER | wx.EXPAND) calibrationTurnInternalSizer.AddSpacer(15) spin_one_rotation_button = wx.Button(self, -1, label="Spin 1 Rotation") self.Bind(wx.EVT_BUTTON, self.spin_one_rotation_button_OnButtonClick, spin_one_rotation_button) calibrationTurnInternalSizer.Add(spin_one_rotation_button, 0, wx.ALIGN_CENTER | wx.EXPAND) calibrationTurnSizer.Add(calibrationTurnInternalSizer, 0, wx.ALIGN_LEFT) # Exit exit_sizer = wx.BoxSizer(wx.HORIZONTAL) exit_button = wx.Button(self, label="Exit") exit_button.Bind(wx.EVT_BUTTON, self.onClose) save_button = wx.Button(self, label="Save and Exit") save_button.Bind(wx.EVT_BUTTON, self.onSave) # The distance between wheels is invalid. self.msg_label = wx.StaticText(self, -1, size=(400, 30), label="") exit_sizer.Add(self.msg_label, 1, wx.ALIGN_LEFT | wx.EXPAND) exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 20) exit_sizer.Add(save_button, 0, wx.ALIGN_RIGHT) # Fill remote control section control_sizer.Add(control_label, 0, wx.ALIGN_CENTER | wx.BOTTOM, 10) control_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER) control_sizer.Add(eyes_sizer, 0, wx.ALIGN_CENTER) control_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER | wx.TOP, 10) control_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER) control_sizer.Add(bwd_sizer, 0, wx.ALIGN_CENTER) # Fill check buttons vital_signs_sizer.Add(vital_signs_label, 0, wx.ALIGN_LEFT | wx.BOTTOM, 10) vital_signs_sizer.Add(batterySizer, 0, wx.ALIGN_LEFT | wx.TOP, 9) vital_signs_sizer.Add(firmwareSizer, 0, wx.ALIGN_LEFT | wx.TOP, 20) # Fill calibration section calibration_sizer.Add(calibration_label, 0, wx.ALIGN_LEFT | wx.BOTTOM, 5) calibration_sizer.Add(calibrationDriveSizer, 0, wx.ALIGN_LEFT | wx.TOP | wx.BOTTOM | wx.LEFT, 10, 30) calibration_sizer.Add(calibrationTurnSizer, 0, wx.ALIGN_LEFT | wx.TOP | wx.BOTTOM | wx.LEFT, 10, 30) top_sizer.Add(control_sizer, 0, wx.ALIGN_LEFT | wx.BOTTOM | wx.RIGHT, 20) top_sizer.Add(vital_signs_sizer, 0, wx.ALIGN_LEFT | wx.LEFT, 40) bottom_sizer.Add(calibration_sizer, 0) main_sizer.Add(top_sizer, 0, wx.LEFT | wx.TOP, 30) main_sizer.Add(bottom_sizer, 0, wx.LEFT | wx.TOP, 30) main_sizer.Add(exit_sizer, 1, wx.ALIGN_RIGHT | wx.TOP | wx.RIGHT, 10) self.SetSizerAndFit(main_sizer)
def __init__(self, parent): wx.Panel.__init__(self, parent=parent) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.SetBackgroundColour(wx.WHITE) self.frame = parent # main sizer main_sizer = wx.BoxSizer(wx.VERTICAL) main_sizer.AddSpacer(10) # if we can auto-detect, then give feedback to the user if no_auto_detect == False: detected_robot = auto_detect_robot.autodetect() if detected_robot != "GoPiGo": detected_robot_str = wx.StaticText( self, -1, label="Warning: Could not find a GoPiGo") detected_robot_str.SetForegroundColour('red') warning_sizer = wx.BoxSizer(wx.HORIZONTAL) warning_sizer.Add(detected_robot_str, 0, wx.EXPAND | wx.ALIGN_CENTER) main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER) # LED buttons led_sizer = wx.BoxSizer(wx.HORIZONTAL) left_led_button = wx.Button(self, label="Left LED") self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, label="Right LED") self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) led_sizer.AddSpacer(30) led_sizer.Add(left_led_button, 0, wx.ALIGN_CENTER) led_sizer.AddSpacer(80) led_sizer.Add(right_led_button, 0, wx.ALIGN_CENTER) led_sizer.AddSpacer(30) fwd_sizer = wx.BoxSizer(wx.HORIZONTAL) fwd_button = wx.Button(self, label="Forward") self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER) middle_sizer = wx.BoxSizer(wx.HORIZONTAL) left_button = wx.Button(self, label="Left") self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, label="Stop") stop_button.SetBackgroundColour('red') self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, label="Right") self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER) middle_sizer.AddSpacer(20) middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER) middle_sizer.AddSpacer(20) middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER) bwdSizer = wx.BoxSizer(wx.HORIZONTAL) bwd_button = wx.Button(self, label="Back") self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) bwdSizer.Add(bwd_button, 0, wx.ALIGN_CENTER) batterySizer = wx.BoxSizer(wx.HORIZONTAL) battery_button = wx.Button(self, label="Check Battery Voltage") self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) self.battery_label = wx.StaticText(self, label=str(round(v, 1)) + "V") batterySizer.AddSpacer(30) batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT) batterySizer.AddSpacer(20) batterySizer.Add(self.battery_label, 0, wx.ALIGN_CENTER | wx.EXPAND) firmwareSizer = wx.BoxSizer(wx.HORIZONTAL) firmware_button = wx.Button(self, -1, label="Check Firmware Version") self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) self.firmware_label = wx.StaticText(self, -1, label=str(f)) firmwareSizer.AddSpacer(30) firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT) firmwareSizer.AddSpacer(15) firmwareSizer.Add(self.firmware_label, 0, wx.ALIGN_CENTER | wx.EXPAND) trimbuttons_sizer = wx.BoxSizer(wx.HORIZONTAL) trim_read_button = wx.Button(self, label=" Trim Read ") self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick, trim_read_button) trim_test_button = wx.Button(self, label="Trim Test ") self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick, trim_test_button) trim_write_button = wx.Button(self, label="Trim Write") self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick, trim_write_button) # trimbuttons_sizer.AddSpacer(30) trimbuttons_sizer.Add(trim_read_button, 0, wx.ALIGN_CENTER) trimbuttons_sizer.AddSpacer(30) trimbuttons_sizer.Add(trim_test_button, 0, wx.ALIGN_CENTER) trimbuttons_sizer.AddSpacer(30) trimbuttons_sizer.Add(trim_write_button, 0, wx.ALIGN_CENTER) trim_sizer = wx.BoxSizer(wx.HORIZONTAL) self.trim_label = wx.StaticText(self, -1, label="Trim: " + str(trim_val)) self.slider = wx.Slider(self, value=0, minValue=-100, maxValue=100, size=(250, -1), style=wx.SL_HORIZONTAL) self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll) trim_sizer.Add(self.trim_label, 0, wx.ALIGN_CENTER) trim_sizer.AddSpacer(30) trim_sizer.Add(self.slider, 0, wx.ALIGN_CENTER) # Exit exit_sizer = wx.BoxSizer(wx.HORIZONTAL) exit_button = wx.Button(self, label="Exit") exit_button.Bind(wx.EVT_BUTTON, self.onClose) exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT) exit_sizer.AddSpacer(30) main_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(10) main_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(10) main_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(10) main_sizer.Add(bwdSizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(40) main_sizer.Add(trimbuttons_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(5) main_sizer.Add(trim_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(30) main_sizer.Add(batterySizer, 0) main_sizer.Add(firmwareSizer, 0) main_sizer.AddSpacer(20) main_sizer.Add(exit_sizer, 0, wx.ALIGN_RIGHT) self.SetSizerAndFit(main_sizer)
def initialize(self): sizer = wx.GridBagSizer() x=75 y=175 dist=60 # if we can auto-detect, then give feedback to the user if no_auto_detect == False: detected_robot = auto_detect_robot.autodetect() if detected_robot != "GoPiGo": detected_robot_str = wx.StaticText(self,-1, label="Warning: Could not find a GoPiGo",pos=(x-30+dist*2,4)) detected_robot_str.SetForegroundColour('red') sizer.AddStretchSpacer((1,1)) sizer.Add(detected_robot_str,(0,1)) sizer.AddStretchSpacer((1,1)) # Motion buttons left_button = wx.Button(self,-1,label="Left", pos=(x,y)) sizer.Add(left_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self,-1,label="Stop", pos=(x+dist*2,y)) stop_button.SetBackgroundColour('red') sizer.Add(stop_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self,-1,label="Right", pos=(x+dist*4,y)) sizer.Add(right_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) fwd_button = wx.Button(self,-1,label="Forward", pos=(x+dist*2,y-dist)) sizer.Add(fwd_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) bwd_button = wx.Button(self,-1,label="Back", pos=(x+dist*2,y+dist)) sizer.Add(bwd_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) # Led buttons x=75 y=25 left_led_button = wx.Button(self,-1,label="Left LED", pos=(x,y)) sizer.Add(left_led_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self,-1,label="Right LED", pos=(x+dist*4,y)) sizer.Add(right_led_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) y=320 battery_button = wx.Button(self,-1,label="Check Battery Voltage\t ", pos=(x,y)) sizer.Add(battery_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) firmware_button = wx.Button(self,-1,label="Check Firmware Version\t", pos=(x,y+dist/2)) sizer.Add(firmware_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) # Set up labels # self.label = wx.StaticText(self,-1,label=u' ',pos=(25,y+150)) # self.label_top = wx.StaticText(self,-1,label=u'Test',pos=(25,0)) # sizer.Add( self.label, (1,0),(1,2), wx.EXPAND ) # sizer.Add( self.label_top, (1,0),(1,2), wx.EXPAND ) self.battery_label = wx.StaticText(self,-1,label=str(v)+"V",pos=(x+dist*2+45,y+6)) sizer.Add( self.battery_label, (1,0),(1,2), wx.EXPAND ) self.firmware_label = wx.StaticText(self,-1,label=str(f),pos=(x+dist*2+45,y+6+dist/2)) sizer.Add( self.firmware_label, (1,0),(1,2), wx.EXPAND ) self.trim_label = wx.StaticText(self,-1,label="You can adjust the trim of your GoPiGo to help it go straight forward.\nUse the slider below to adjust the trim difference between the left\nand right motors.",pos=(x,y+6+dist/2+40)) sizer.Add( self.firmware_label, (1,0),(1,2), wx.EXPAND ) y=460 self.trim_label = wx.StaticText(self,-1,label=str(trim_val),pos=(x+dist*2,y+6)) sizer.Add( self.trim_label, (1,0),(1,2), wx.EXPAND ) trim_read_button = wx.Button(self,-1,label=" Trim Read ", pos=(x,y)) sizer.Add(trim_read_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick, trim_read_button) trim_test_button = wx.Button(self,-1,label="Trim Test ", pos=(x,y+dist/2)) sizer.Add(trim_test_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick, trim_test_button) trim_write_button = wx.Button(self,-1,label="Trim Write", pos=(x,y+dist)) sizer.Add(trim_write_button, (0,1)) self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick, trim_write_button) self.slider = wx.Slider(self, value=0, minValue=-100, maxValue=100, pos=(x+dist*2, y+dist/2),size=(250, -1), style=wx.SL_HORIZONTAL) self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll) self.Show(True)
def __init__(self, parent): wx.Panel.__init__(self, parent=parent) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.SetBackgroundColour(wx.WHITE) self.frame = parent # main sizer main_sizer = wx.BoxSizer(wx.VERTICAL) main_sizer.AddSpacer(10) # if we can auto-detect, then give feedback to the user if no_auto_detect == False: detected_robot = auto_detect_robot.autodetect() if detected_robot != "GoPiGo": detected_robot_str = wx.StaticText(self,-1, label="Warning: Could not find a GoPiGo") detected_robot_str.SetForegroundColour('red') warning_sizer = wx.BoxSizer(wx.HORIZONTAL) warning_sizer.Add(detected_robot_str, 0, wx.EXPAND| wx.ALIGN_CENTER) main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER) # LED buttons led_sizer = wx.BoxSizer(wx.HORIZONTAL) left_led_button = wx.Button(self, label="Left LED") self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, label="Right LED") self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) led_sizer.AddSpacer(30) led_sizer.Add(left_led_button, 0, wx.ALIGN_CENTER) led_sizer.AddSpacer(80) led_sizer.Add(right_led_button, 0, wx.ALIGN_CENTER) led_sizer.AddSpacer(30) fwd_sizer = wx.BoxSizer(wx.HORIZONTAL) fwd_button = wx.Button(self, label="Forward") self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER) middle_sizer = wx.BoxSizer(wx.HORIZONTAL) left_button = wx.Button(self, label="Left") self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, label="Stop") stop_button.SetBackgroundColour('red') self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, label="Right") self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER) middle_sizer.AddSpacer(20) middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER) middle_sizer.AddSpacer(20) middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER) bwdSizer = wx.BoxSizer(wx.HORIZONTAL) bwd_button = wx.Button(self, label="Back") self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) bwdSizer.Add(bwd_button, 0, wx.ALIGN_CENTER) batterySizer = wx.BoxSizer(wx.HORIZONTAL) battery_button = wx.Button(self, label="Check Battery Voltage") self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) self.battery_label = wx.StaticText(self, label=str(round(v,1))+"V") batterySizer.AddSpacer(30) batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT ) batterySizer.AddSpacer(20) batterySizer.Add( self.battery_label,0, wx.ALIGN_CENTER|wx.EXPAND ) firmwareSizer = wx.BoxSizer(wx.HORIZONTAL) firmware_button = wx.Button(self,-1,label="Check Firmware Version") self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) self.firmware_label = wx.StaticText(self,-1,label=str(f)) firmwareSizer.AddSpacer(30) firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT) firmwareSizer.AddSpacer(15) firmwareSizer.Add( self.firmware_label, 0, wx.ALIGN_CENTER|wx.EXPAND ) trimbuttons_sizer = wx.BoxSizer(wx.HORIZONTAL) trim_read_button = wx.Button(self, label=" Trim Read ") self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick, trim_read_button) trim_test_button = wx.Button(self, label="Trim Test ") self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick, trim_test_button) trim_write_button = wx.Button(self, label="Trim Write") self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick, trim_write_button) # trimbuttons_sizer.AddSpacer(30) trimbuttons_sizer.Add( trim_read_button, 0, wx.ALIGN_CENTER ) trimbuttons_sizer.AddSpacer(30) trimbuttons_sizer.Add( trim_test_button, 0, wx.ALIGN_CENTER) trimbuttons_sizer.AddSpacer(30) trimbuttons_sizer.Add( trim_write_button, 0, wx.ALIGN_CENTER ) trim_sizer = wx.BoxSizer(wx.HORIZONTAL) self.trim_label = wx.StaticText(self, -1, label="Trim: "+str(trim_val)) self.slider = wx.Slider(self, value=0, minValue=-100, maxValue=100, size=(250, -1), style=wx.SL_HORIZONTAL) self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll) trim_sizer.Add( self.trim_label, 0, wx.ALIGN_CENTER ) trim_sizer.AddSpacer(30) trim_sizer.Add( self.slider, 0, wx.ALIGN_CENTER ) # Exit exit_sizer = wx.BoxSizer(wx.HORIZONTAL) exit_button = wx.Button(self, label="Exit") exit_button.Bind(wx.EVT_BUTTON, self.onClose) exit_sizer.Add(exit_button,0, wx.ALIGN_RIGHT) exit_sizer.AddSpacer(30) main_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(10) main_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(10) main_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(10) main_sizer.Add(bwdSizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(40) main_sizer.Add(trimbuttons_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(5) main_sizer.Add(trim_sizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(30) main_sizer.Add(batterySizer, 0) main_sizer.Add(firmwareSizer, 0) main_sizer.AddSpacer(20) main_sizer.Add(exit_sizer, 0, wx.ALIGN_RIGHT) self.SetSizerAndFit(main_sizer)
def __init__(self, parent): wx.Panel.__init__(self, parent=parent) #self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.SetBackgroundColour(wx.WHITE) self.frame = parent title_font = wx.Font( 15, wx.FONTSTYLE_NORMAL, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD) title_font.SetUnderlined(False) small_font = wx.Font( 10, wx.FONTSTYLE_NORMAL, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD) small_font.SetUnderlined(False) # main sizer main_sizer = wx.BoxSizer(wx.VERTICAL) # Two horizontal sections top_sizer = wx.BoxSizer(wx.HORIZONTAL) bottom_sizer = wx.BoxSizer(wx.HORIZONTAL) # top has two horizontal sections control_sizer = wx.BoxSizer(wx.VERTICAL) vital_signs_sizer = wx.BoxSizer(wx.VERTICAL) if no_auto_detect == True: detected_robot = auto_detect_robot.autodetect() print(detected_robot) if detected_robot != "GoPiGo3": detected_robot_str = wx.StaticText(self,-1, label="Warning: Could not find a GoPiGo3") detected_robot_str.SetForegroundColour('red') warning_sizer = wx.BoxSizer(wx.HORIZONTAL) warning_sizer.Add(detected_robot_str, 0, wx.EXPAND| wx.ALIGN_CENTER) main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER) # Remote Control control_label = wx.StaticText(self, -1, label="Remote Control:") control_label.SetFont(title_font) left_led_button = wx.Button(self, label="Left Blinker") self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, label="Right Blinker") self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) led_sizer = wx.BoxSizer(wx.HORIZONTAL) led_sizer.Add(left_led_button, 0, wx.ALIGN_LEFT|wx.TOP,9) led_sizer.AddSpacer(70) led_sizer.Add(right_led_button, 0, wx.ALIGN_RIGHT|wx.TOP,9) eyes_sizer = wx.BoxSizer(wx.HORIZONTAL) left_eye_button = wx.Button(self, label="Left Eye ") self.Bind(wx.EVT_BUTTON, self.left_eye_button_OnButtonClick, left_eye_button) bmp = wx.Bitmap(ICON_PATH+"dex.png",type=wx.BITMAP_TYPE_PNG) robotbitmap=wx.StaticBitmap(self, bitmap=bmp) right_eye_button = wx.Button(self, label="Right Eye") self.Bind(wx.EVT_BUTTON, self.right_eye_button_OnButtonClick, right_eye_button) eyes_sizer.Add(right_eye_button, 0, wx.ALIGN_CENTER) eyes_sizer.Add(robotbitmap, 0, wx.ALIGN_CENTER) eyes_sizer.Add(left_eye_button, 0, wx.ALIGN_CENTER) fwd_sizer = wx.BoxSizer(wx.HORIZONTAL) fwd_button = wx.Button(self, label="Forward") self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER) middle_sizer = wx.BoxSizer(wx.HORIZONTAL) left_button = wx.Button(self, label="Left") self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, label="Stop") stop_button.SetForegroundColour('red') self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, label="Right") self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER) middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER) middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER) bwd_sizer = wx.BoxSizer(wx.HORIZONTAL) bwd_button = wx.Button(self, label="Back") self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) bwd_sizer.Add(bwd_button, 0, wx.ALIGN_CENTER) # Vital Signs Values vital_signs_label = wx.StaticText(self, -1, label="Vital Signs:") vital_signs_label.SetFont(title_font) batterySizer = wx.BoxSizer(wx.HORIZONTAL) battery_button = wx.Button(self, label="Check Battery Voltage") self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) self.battery_label = wx.StaticText(self, label=str(round(v,1))+"V") batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT ) batterySizer.AddSpacer(22) batterySizer.Add( self.battery_label,0, wx.ALIGN_CENTER|wx.EXPAND ) firmwareSizer = wx.BoxSizer(wx.HORIZONTAL) self.firmware_label = wx.StaticText(self,-1,label="Firmware Version: "+str(firmware_version)) firmwareSizer.Add( self.firmware_label, 0, wx.ALIGN_CENTER|wx.EXPAND ) SerialNoSizer = wx.BoxSizer(wx.HORIZONTAL) self.serial_label = wx.StaticText(self,-1,label="Serial Number: "+str(serial)) SerialNoSizer.Add( self.serial_label, 0, wx.ALIGN_CENTER|wx.EXPAND ) tickSizer = wx.BoxSizer(wx.HORIZONTAL) self.ticks_label = wx.StaticText(self,-1,label="Ticks per Motor: "+str(ticks)) tickSizer.Add( self.ticks_label, 0, wx.ALIGN_CENTER|wx.EXPAND ) versionSizer = wx.BoxSizer(wx.HORIZONTAL) print(library_version) if library_version != "": self.version_label = wx.StaticText(self,-1,label="Driver Version: "+str(library_version)) versionSizer.Add( self.version_label, 0, wx.ALIGN_CENTER|wx.EXPAND ) # Exit exit_sizer = wx.BoxSizer(wx.HORIZONTAL) exit_button = wx.Button(self, label="Exit") exit_button.Bind(wx.EVT_BUTTON, self.onClose) self.msg_label = wx.StaticText(self, -1, size=(400,30), label="") exit_sizer.Add(self.msg_label, 1, wx.ALIGN_LEFT|wx.EXPAND) exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT|wx.RIGHT, 20) # Fill remote control section control_sizer.Add(control_label, 0, wx.ALIGN_CENTER|wx.BOTTOM,10) control_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER) control_sizer.Add(eyes_sizer, 0, wx.ALIGN_CENTER) control_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER|wx.TOP,10) control_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER) control_sizer.Add(bwd_sizer, 0, wx.ALIGN_CENTER) # Fill check buttons vital_signs_sizer.Add(vital_signs_label, 0, wx.ALIGN_LEFT|wx.BOTTOM, 10) vital_signs_sizer.Add(batterySizer, 0, wx.ALIGN_LEFT|wx.TOP,9) vital_signs_sizer.Add(firmwareSizer, 0, wx.ALIGN_LEFT|wx.TOP,10) vital_signs_sizer.Add(SerialNoSizer, 0, wx.ALIGN_LEFT|wx.TOP,10) vital_signs_sizer.Add(tickSizer, 0, wx.ALIGN_LEFT|wx.TOP,10) vital_signs_sizer.Add(versionSizer, 0, wx.ALIGN_LEFT|wx.TOP,10) main_sizer.Add(control_sizer, 0, wx.LEFT|wx.TOP, 30, 20) main_sizer.Add(vital_signs_sizer, 0, wx.LEFT|wx.TOP, 30, 40) # main_sizer.Add(top_sizer, 0, wx.LEFT|wx.TOP, 30) main_sizer.Add(bottom_sizer, 0, wx.LEFT|wx.TOP, 30) main_sizer.Add(exit_sizer, 1, wx.ALIGN_RIGHT|wx.TOP|wx.RIGHT, 10) self.SetSizerAndFit(main_sizer)
def __init__(self, parent): wx.Panel.__init__(self, parent=parent) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.SetBackgroundColour(wx.WHITE) self.frame = parent # main sizer main_sizer = wx.BoxSizer(wx.VERTICAL) main_sizer.AddSpacer(30) if no_auto_detect == True: detected_robot = auto_detect_robot.autodetect() print(detected_robot) if detected_robot != "GoPiGo3": detected_robot_str = wx.StaticText( self, -1, label="Warning: Could not find a GoPiGo3") detected_robot_str.SetForegroundColour('red') warning_sizer = wx.BoxSizer(wx.HORIZONTAL) warning_sizer.Add(detected_robot_str, 0, wx.EXPAND | wx.ALIGN_CENTER) main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER) led_sizer = wx.BoxSizer(wx.HORIZONTAL) left_led_button = wx.Button(self, label="Left LED") self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, label="Right LED") self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) led_sizer.AddSpacer(30) led_sizer.Add(left_led_button, 0, wx.ALIGN_CENTER) led_sizer.AddSpacer(80) led_sizer.Add(right_led_button, 0, wx.ALIGN_CENTER) led_sizer.AddSpacer(30) eyesSizer = wx.BoxSizer(wx.HORIZONTAL) left_eye_button = wx.Button(self, label="Left eye") self.Bind(wx.EVT_BUTTON, self.left_eye_button_OnButtonClick, left_eye_button) icon_sizer = wx.BoxSizer(wx.HORIZONTAL) bmp = wx.Bitmap(ICON_PATH + "dex.png", type=wx.BITMAP_TYPE_PNG) robotbitmap = wx.StaticBitmap(self, bitmap=bmp) right_eye_button = wx.Button(self, label="Right eye") self.Bind(wx.EVT_BUTTON, self.right_eye_button_OnButtonClick, right_eye_button) eyesSizer.AddSpacer(30) eyesSizer.Add(right_eye_button, 0) eyesSizer.Add(robotbitmap, 0) eyesSizer.Add(left_eye_button, 0) eyesSizer.AddSpacer(30) fwd_sizer = wx.BoxSizer(wx.HORIZONTAL) fwd_button = wx.Button(self, label="Forward") self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER) middle_sizer = wx.BoxSizer(wx.HORIZONTAL) left_button = wx.Button(self, label="Left") self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, label="Stop") stop_button.SetBackgroundColour('red') self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, label="Right") self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER) middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER) middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER) bwdSizer = wx.BoxSizer(wx.HORIZONTAL) bwd_button = wx.Button(self, label="Back") self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) bwdSizer.Add(bwd_button, 0, wx.ALIGN_CENTER) batterySizer = wx.BoxSizer(wx.HORIZONTAL) battery_button = wx.Button(self, label="Check Battery Voltage") self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) self.battery_label = wx.StaticText(self, label=str(round(v, 1)) + "V") batterySizer.AddSpacer(30) batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT) batterySizer.AddSpacer(20) batterySizer.Add(self.battery_label, 0, wx.ALIGN_CENTER | wx.EXPAND) firmwareSizer = wx.BoxSizer(wx.HORIZONTAL) firmware_button = wx.Button(self, -1, label="Check Firmware Version") self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) self.firmware_label = wx.StaticText(self, -1, label=str(f)) firmwareSizer.AddSpacer(30) firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT) firmwareSizer.AddSpacer(15) firmwareSizer.Add(self.firmware_label, 0, wx.ALIGN_CENTER | wx.EXPAND) # Exit exit_sizer = wx.BoxSizer(wx.HORIZONTAL) exit_button = wx.Button(self, label="Exit") exit_button.Bind(wx.EVT_BUTTON, self.onClose) exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT) exit_sizer.AddSpacer(30) main_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER) main_sizer.Add(eyesSizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(20) main_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER) main_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER) main_sizer.Add(bwdSizer, 0, wx.ALIGN_CENTER) main_sizer.AddSpacer(30) main_sizer.Add(batterySizer, 0, wx.ALIGN_LEFT) main_sizer.Add(firmwareSizer, 0, wx.ALIGN_LEFT) main_sizer.AddSpacer(20) main_sizer.Add(exit_sizer, 0, wx.ALIGN_RIGHT) self.SetSizerAndFit(main_sizer)
def initialize(self): sizer = wx.GridBagSizer() x = 75 y = 175 dist = 60 # if we can auto-detect, then give feedback to the user if no_auto_detect == False: detected_robot = auto_detect_robot.autodetect() if detected_robot != "GoPiGo3": detected_robot_str = wx.StaticText( self, -1, label="Warning: Could not find a GoPiGo3", pos=(x - 30 + dist * 2, 4)) detected_robot_str.SetForegroundColour('red') sizer.AddStretchSpacer((1, 1)) sizer.Add(detected_robot_str, (0, 1)) sizer.AddStretchSpacer((1, 1)) # Motion buttons left_button = wx.Button(self, -1, label="Left", pos=(x, y)) sizer.Add(left_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button) stop_button = wx.Button(self, -1, label="Stop", pos=(x + dist * 2, y)) stop_button.SetBackgroundColour('red') sizer.Add(stop_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button) right_button = wx.Button(self, -1, label="Right", pos=(x + dist * 4, y)) sizer.Add(right_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button) fwd_button = wx.Button(self, -1, label="Forward", pos=(x + dist * 2, y - dist)) sizer.Add(fwd_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button) bwd_button = wx.Button(self, -1, label="Back", pos=(x + dist * 2, y + dist)) sizer.Add(bwd_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button) # Led buttons x = 75 y = 25 left_led_button = wx.Button(self, -1, label="Left LED", pos=(x, y)) sizer.Add(left_led_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button) right_led_button = wx.Button(self, -1, label="Right LED", pos=(x + dist * 4, y)) sizer.Add(right_led_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button) y = 320 battery_button = wx.Button(self, -1, label="Check Battery Voltage\t ", pos=(x, y)) sizer.Add(battery_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button) firmware_button = wx.Button(self, -1, label="Check Firmware Version\t", pos=(x, y + dist / 2)) sizer.Add(firmware_button, (0, 1)) self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button) # Set up labels self.battery_label = wx.StaticText(self, -1, label=str(v) + "V", pos=(x + dist * 2 + 45, y + 6)) sizer.Add(self.battery_label, (1, 0), (1, 2), wx.EXPAND) self.firmware_label = wx.StaticText(self, -1, label=str(f), pos=(x + dist * 2 + 45, y + 6 + dist / 2)) sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND) sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND) y = 460 self.Show(True)