def getParticipantInfo(): #Add an InfoPanel with a title bar participantInfo = vizinfo.InfoPanel('', title='Participant Information', align=viz.ALIGN_CENTER, icon=False) #Add name and ID fields textbox_last = participantInfo.addLabelItem('Last Name', viz.addTextbox()) textbox_first = participantInfo.addLabelItem('First Name', viz.addTextbox()) textbox_id = participantInfo.addLabelItem('ID', viz.addTextbox()) participantInfo.addSeparator(padding=(20, 20)) #Add gender and age fields radiobutton_male = participantInfo.addLabelItem('Male', viz.addRadioButton(0)) radiobutton_female = participantInfo.addLabelItem('Female', viz.addRadioButton(0)) droplist_age = participantInfo.addLabelItem('Age Group', viz.addDropList()) ageList = ['20-30', '31-40', '41-50', '51-60', '61-70'] droplist_age.addItems(ageList) participantInfo.addSeparator(padding=(20, 20)) #Add 2d 3D fields radiobutton_2D = participantInfo.addLabelItem('2D', viz.addRadioButton(1)) radiobutton_3D = participantInfo.addLabelItem('3D', viz.addRadioButton(1)) participantInfo.addSeparator(padding=(20, 20)) #Add submit button aligned to the right and wait until it's pressed submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'), align=viz.ALIGN_RIGHT_CENTER) yield viztask.waitButtonUp(submitButton) #Collect participant data data = viz.Data() data.lastName = textbox_last.get() data.firstName = textbox_first.get() data.id = textbox_id.get() data.ageGroup = ageList[droplist_age.getSelection()] if radiobutton_male.get() == viz.DOWN: data.gender = 'male' else: data.gender = 'female' if radiobutton_2D.get() == viz.DOWN: data.environment = '2D' else: data.environment = '3D' participantInfo.remove() # Return participant data viztask.returnValue(data)
def getParticipantInfo(): #Add an InfoPanel with a title bar participantInfo = vizinfo.InfoPanel('',title='Participant Information',align=viz.ALIGN_CENTER, icon=False) #Add name and ID fields textbox_last = participantInfo.addLabelItem('Last Name',viz.addTextbox()) textbox_first = participantInfo.addLabelItem('First Name',viz.addTextbox()) textbox_id = participantInfo.addLabelItem('ID',viz.addTextbox()) participantInfo.addSeparator(padding=(20,20)) #Add gender and age fields radiobutton_male = participantInfo.addLabelItem('Male',viz.addRadioButton(0)) radiobutton_female = participantInfo.addLabelItem('Female',viz.addRadioButton(0)) droplist_age = participantInfo.addLabelItem('Age Group',viz.addDropList()) ageList = ['20-30','31-40','41-50','51-60','61-70'] droplist_age.addItems(ageList) participantInfo.addSeparator(padding=(20,20)) #Add 2d 3D fields radiobutton_2D = participantInfo.addLabelItem('2D',viz.addRadioButton(1)) radiobutton_3D = participantInfo.addLabelItem('3D',viz.addRadioButton(1)) participantInfo.addSeparator(padding=(20,20)) #Add submit button aligned to the right and wait until it's pressed submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'),align=viz.ALIGN_RIGHT_CENTER) yield viztask.waitButtonUp(submitButton) #Collect participant data data = viz.Data() data.lastName = textbox_last.get() data.firstName = textbox_first.get() data.id = textbox_id.get() data.ageGroup = ageList[droplist_age.getSelection()] if radiobutton_male.get() == viz.DOWN: data.gender = 'male' else: data.gender = 'female' if radiobutton_2D.get() == viz.DOWN: data.environment = '2D' else: data.environment = '3D' participantInfo.remove() # Return participant data viztask.returnValue(data)
def __init__(self, canvas, controller): super(ModeMenu, self).__init__(canvas, 'mode', 'Mode Selection') # Store controller instance self.controller = controller #Store modes from config to populate modemenu with self.modes = config.MenuConfig.Modes self.getPanel().fontSize(50) ########################## """creating modes panel""" ########################## #creating labels for modes self.modeLabels = {} for l in self.modes.iterkeys(): self.modeLabels[l] = viz.addText(l, parent=canvas) #creating radio buttons for modes self.modeGroup = viz.addGroup(parent=canvas) self.radioButtons = {} for rb in self.modes.iterkeys(): self.radioButtons[rb] = viz.addRadioButton(self.modeGroup, parent=canvas) self.radioButtons['Free Play'].set(1) #creating grid panel to add mode to modeGrid = vizdlg.GridPanel(parent=canvas) #adding modes and radio buttons to grid panel for i in self.modes.iterkeys(): modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]]) ############################## """next and back buttons""" ############################## #creating grid panels to add next and back buttons to setGrid = vizdlg.GridPanel(parent=canvas) #create back and next buttons and add to grid panel backButton = viz.addButtonLabel('Back') startButton = viz.addButtonLabel('Next') setGrid.addRow([backButton, startButton]) #add back and state button actions self.backward = vizact.onbuttondown(backButton, self.controller.backMenu) self.forward = vizact.onbuttondown(startButton, self.controller.nextMenu) ############################### """add items to ModeMenu""" ############################### self.addItem(modeGrid) self.addItem(setGrid)
def participantInfo(): manager.setDebug(viz.OFF) debugEventHandle.setEnabled(viz.OFF) # Hide info panel currently displayed info.visible(viz.OFF) # Add an InfoPanel with a title bar participantInfo = vizinfo.InfoPanel("", title="Participant Information", align=viz.ALIGN_CENTER, icon=False) # Add name and ID fields textbox_last = participantInfo.addLabelItem("Last Name", viz.addTextbox()) textbox_first = participantInfo.addLabelItem("First Name", viz.addTextbox()) textbox_id = participantInfo.addLabelItem("ID", viz.addTextbox()) participantInfo.addSeparator(padding=(20, 20)) # Add gender and age fields radiobutton_male = participantInfo.addLabelItem("Male", viz.addRadioButton(0)) radiobutton_female = participantInfo.addLabelItem("Female", viz.addRadioButton(0)) droplist_age = participantInfo.addLabelItem("Age Group", viz.addDropList()) ageList = ["20-30", "31-40", "41-50", "51-60", "61-70"] droplist_age.addItems(ageList) participantInfo.addSeparator() # Add submit button aligned to the right and wait until it's pressed submitButton = participantInfo.addItem(viz.addButtonLabel("Submit"), align=viz.ALIGN_RIGHT_CENTER) yield viztask.waitButtonUp(submitButton) # Collect participant data data = viz.Data() data.lastName = textbox_last.get() data.firstName = textbox_first.get() data.id = textbox_id.get() data.ageGroup = ageList[droplist_age.getSelection()] if radiobutton_male.get() == viz.DOWN: data.gender = "male" else: data.gender = "female" participantInfo.remove() # Return participant data viztask.returnValue(data)
def participantInfo(): #Turn off visibility of proximity sensors and disable toggle manager.setDebug(viz.OFF) debugEventHandle.setEnabled(viz.OFF) #Hide info panel currently displayed info.visible(viz.OFF) #Add an InfoPanel with a title bar participantInfo = vizinfo.InfoPanel('',title='Participant Information',align=viz.ALIGN_CENTER, icon=False) #Add name and ID fields textbox_last = participantInfo.addLabelItem('Last Name',viz.addTextbox()) textbox_first = participantInfo.addLabelItem('First Name',viz.addTextbox()) textbox_id = participantInfo.addLabelItem('ID',viz.addTextbox()) participantInfo.addSeparator(padding=(20,20)) #Add gender and age fields radiobutton_male = participantInfo.addLabelItem('Male',viz.addRadioButton(0)) radiobutton_female = participantInfo.addLabelItem('Female',viz.addRadioButton(0)) droplist_age = participantInfo.addLabelItem('Age Group',viz.addDropList()) ageList = ['20-30','31-40','41-50','51-60','61-70'] droplist_age.addItems(ageList) participantInfo.addSeparator() #Add submit button aligned to the right and wait until it's pressed submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'),align=viz.ALIGN_RIGHT_CENTER) yield viztask.waitButtonUp(submitButton) #Collect participant data data = viz.Data() data.lastName = textbox_last.get() data.firstName = textbox_first.get() data.id = textbox_id.get() data.ageGroup = ageList[droplist_age.getSelection()] if radiobutton_male.get() == viz.DOWN: data.gender = 'male' else: data.gender = 'female' participantInfo.remove() # Return participant data viztask.returnValue(data)
def __init__(self, canvas, controller): super(ModeMenu, self).__init__(canvas, 'mode', 'Mode Selection') # Store controller instance self.controller = controller #Store modes from config to populate modemenu with self.modes = config.MenuConfig.Modes self.getPanel().fontSize(50) ########################## """creating modes panel""" ########################## #creating labels for modes self.modeLabels = {} for l in self.modes.iterkeys(): self.modeLabels[l] = viz.addText(l, parent = canvas) #creating radio buttons for modes self.modeGroup = viz.addGroup(parent = canvas) self.radioButtons = {} for rb in self.modes.iterkeys(): self.radioButtons[rb] = viz.addRadioButton(self.modeGroup, parent = canvas) self.radioButtons['Free Play'].set(1) #creating grid panel to add mode to modeGrid = vizdlg.GridPanel(parent = canvas) #adding modes and radio buttons to grid panel for i in self.modes.iterkeys(): modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]]) ############################## """next and back buttons""" ############################## #creating grid panels to add next and back buttons to setGrid = vizdlg.GridPanel(parent = canvas) #create back and next buttons and add to grid panel backButton = viz.addButtonLabel('Back') startButton = viz.addButtonLabel('Next') setGrid.addRow([backButton, startButton]) #add back and state button actions self.backward = vizact.onbuttondown(backButton, self.controller.backMenu) self.forward = vizact.onbuttondown(startButton, self.controller.nextMenu) ############################### """add items to ModeMenu""" ############################### self.addItem(modeGrid) self.addItem(setGrid)
def participantInfo(): #Add an InfoPanel with a title bar participantInfo = vizinfo.InfoPanel('', title='Participant Information', align=viz.ALIGN_CENTER, icon=False) #Add ID field textbox_id = participantInfo.addLabelItem('ID', viz.addTextbox()) participantInfo.addSeparator(padding=(10, 10)) #Add eye height field textbox_EH = participantInfo.addLabelItem('Eye Height (m)', viz.addTextbox()) participantInfo.addSeparator(padding=(10, 10)) #Add age field textbox_age = participantInfo.addLabelItem('Age', viz.addTextbox()) participantInfo.addSeparator(padding=(10, 10)) #Add gender field radiobutton_male = participantInfo.addLabelItem('Male', viz.addRadioButton(0)) radiobutton_female = participantInfo.addLabelItem('Female', viz.addRadioButton(0)) radiobutton_other = participantInfo.addLabelItem('Non-Binary', viz.addRadioButton(0)) participantInfo.addSeparator() #Add units field radiobutton_feet = participantInfo.addLabelItem('Feet', viz.addRadioButton(1)) radiobutton_meters = participantInfo.addLabelItem('Meters', viz.addRadioButton(1)) participantInfo.addSeparator() #Add submit button aligned to the right and wait until it's pressed submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'), align=viz.ALIGN_RIGHT_CENTER) yield viztask.waitButtonUp(submitButton) #Collect participant data global data data = viz.Data() data_id = textbox_id.get() data_EH = textbox_EH.get() data_age = textbox_age.get() if radiobutton_male.get() == viz.DOWN: data.gender = 'm' elif radiobutton_female.get() == viz.DOWN: data.gender = 'f' else: data.gender = 'nb' if radiobutton_feet.get() == viz.DOWN: data.units = 'ft' else: data.units = 'm' participantInfo.remove() global IDNum IDNum = int(data_id) print IDNum global age age = float(data_age) global EHNum EHNum = float(data_EH) print age print EHNum print data.gender print data.units
max_gradient_text = viz.addText("Gradient Maximum:", parent = viz.SCREEN) max_gradient_text.setPosition(0.005, 0.0475) max_gradient_text.scale( 0.1, 0.1, 0.1 ) max_gradient_control = viz.addSlider() max_gradient_control.setPosition(0.2, 0.05) max_gradient_control.set(1.0) max_gradient_control.ticksize(0.3, 0.6) #Create controller con = Controller(messageManager) #Shader buttons shader_radio_group = viz.addGroup() lighting_shader_radio = viz.addRadioButton(parent = viz.SCREEN, group = shader_radio_group) lighting_shader_radio.setScale(0.5, 0.5, 0.5) lighting_shader_radio.setPosition(0.085, 0.975) transfer_shader_radio = viz.addRadioButton(parent = viz.SCREEN, group = shader_radio_group) transfer_shader_radio.setScale(0.5, 0.5, 0.5) transfer_shader_radio.setPosition(0.085, 0.95) lighting_shader_radio_text = viz.addText("Lighting Shader:", parent = viz.SCREEN) lighting_shader_radio_text.setPosition(0.01, 0.975) lighting_shader_radio_text.scale( 0.1, 0.1, 0.1 ) lighting_shader_radio_text.alignment( viz.ALIGN_LEFT_CENTER) transfer_shader_radio_text = viz.addText("Transfer Shader:", parent = viz.SCREEN) transfer_shader_radio_text.setPosition(0.01, 0.95) transfer_shader_radio_text.scale( 0.1, 0.1, 0.1 )
TYPICAL_GUI_CANVAS = False NODE3D_CANVAS = True if TYPICAL_GUI_CANVAS: # Create canvas for displaying GUI objects canvas = viz.addGUICanvas() canvas.alignment(viz.ALIGN_CENTER) # Set canvas as default so all GUI objects are automatically added to it viz.MainWindow.setDefaultGUICanvas(canvas) controlPanel = vizinfo.InfoPanel(text='Navigate with WASD', title='Canvas Example') controlPanel.addSection('Render Mode') radio_world_overlay = controlPanel.addLabelItem('World Overlay', viz.addRadioButton('RenderMode')) radio_world = controlPanel.addLabelItem('World', viz.addRadioButton('RenderMode')) radio_screen_ortho = controlPanel.addLabelItem('Screen Ortho', viz.addRadioButton('RenderMode')) radio_world_overlay.set(1) controlPanel.addSeparator() manual_cursor = controlPanel.addLabelItem('Manual Cursor',viz.addCheckbox()) select_world = controlPanel.addItem(viz.addButtonLabel('Select World')) canvas.setRenderWorldOverlay([800,600],40,3) if NODE3D_CANVAS: pigeon = viz.addAvatar('pigeon.cfg',scale=[200]*3) pigeon.addAction(vizact.spin(0,1,0,45)) pigeon.enable(viz.DEPTH_TEST,op=viz.OP_ROOT)
path.setAutoRotate(viz.ON) #Link the ball to the path viz.link(path, ball) #Play the animation path path.play() #Setup path control panel controlPanel = vizinfo.InfoPanel(text=None, title='Settings', icon=False) slider_speed = controlPanel.addLabelItem('Speed', viz.addSlider()) slider_speed.set(0.1) controlPanel.addSection('Loop Mode') radio_loop_off = controlPanel.addLabelItem('Off', viz.addRadioButton('LoopMode')) radio_loop_on = controlPanel.addLabelItem('Loop', viz.addRadioButton('LoopMode')) radio_loop_swing = controlPanel.addLabelItem('Swing', viz.addRadioButton('LoopMode')) radio_loop_circular = controlPanel.addLabelItem('Circular', viz.addRadioButton('LoopMode')) radio_loop_circular.set(1) controlPanel.addSection('Interpolation Mode') radio_interp_linear = controlPanel.addLabelItem('Linear', viz.addRadioButton('InterpolationMode')) radio_interp_cubic = controlPanel.addLabelItem('Bezier', viz.addRadioButton('InterpolationMode')) radio_interp_linear.set(1) def changeSpeed(pos): #Adjust the speed of the animation path path.setSpeed(pos*10) #Setup callbacks for slider events
def participant_info(): """ Query the participant for basic data. Questions to select experimental condition and control type of the experimental condition. Returns: the queried data as a viz.data object """ participant_info = vizinfo.InfoPanel('', title='Participant Information', align=viz.ALIGN_CENTER, icon=False) # query control style droplist; Create a drop-down list drop_control_style = participant_info.addLabelItem('Choose control style', viz.addDropList()) items = ['dk2 head & right hand', 'mouse and keyboard'] # 'mouse and keyboard', 'joystick', 'dk2 head only', 'dk2 head wiimote', drop_control_style.addItems(items) # Add name and ID fields of maze configurations drop_maze_config = participant_info.addLabelItem('Choose maze configuration', viz.addDropList()) items2 = ['auto', 'baseline', 'training', 'I', 'L', 'Z', 'U']#, 'T', '+'] # Add a list of items. drop_maze_config.addItems(items2) # Add name and ID fields of experimental condition drop_maze_run = participant_info.addLabelItem('Choose maze run', viz.addDropList()) items2 = ['auto', '1', '2', '3'] drop_maze_run.addItems(items2) participant_info.addSeparator(padding=(10, 10)) textbox_id = participant_info.addLabelItem('ID', viz.addTextbox()) textbox_age = participant_info.addLabelItem('Age', viz.addTextbox()) textbox_handedness = participant_info.addLabelItem('Handedness', viz.addTextbox()) textbox_vision = participant_info.addLabelItem('Vision', viz.addTextbox()) textbox_cap_size = participant_info.addLabelItem('Cap size', viz.addTextbox()) textbox_neck_size = participant_info.addLabelItem('Neck size', viz.addTextbox()) textbox_labelscheme = participant_info.addLabelItem('Electrode Labelscheme', viz.addTextbox()) participant_info.addSeparator(padding=(10, 10)) # Add gender and age fields radiobutton_male = participant_info.addLabelItem('Male', viz.addRadioButton(2)) radiobutton_female = participant_info.addLabelItem('Female', viz.addRadioButton(2)) participant_info.addSeparator(padding=(10, 10)) # Add submit button aligned to the right and wait until it's pressed submit_button = participant_info.addItem(viz.addButtonLabel('Submit'), align=viz.ALIGN_CENTER) yield viztask.waitButtonUp(submit_button) # Collect participant data data = viz.Data() data.id = textbox_id.get() data.age = textbox_age.get() data.handedness = textbox_handedness.get() data.vision = textbox_vision.get() data.cap_size = textbox_cap_size.get() data.neck_size = textbox_neck_size.get() data.labelscheme = textbox_labelscheme.get() if radiobutton_male.get() == viz.DOWN: data.sex = 'male' else: data.sex = 'female' # Find the index of the current selection. Find the selection itself. data.control_style = drop_control_style.getItems()[drop_control_style.getSelection()] data.maze_config = drop_maze_config.getItems()[drop_maze_config.getSelection()] data.maze_run = drop_maze_run.getItems()[drop_maze_run.getSelection()] participant_info.remove() # Return participant data viztask.returnValue(data)
def __init__(self,canvas): vizinfo.InfoPanel.__init__(self, '',title = 'Game Menu',fontSize = 100,align=viz.ALIGN_CENTER_CENTER,icon=False,parent= canvas) self.layers = config.layers self.modes = config.modes self.name = 'game' self.canvas = canvas self.active = False self.getPanel().fontSize(50) self.setPanelVisible(viz.OFF, animate = False) self.menuVisible = False ##################### '''LAYER TAB PANEL SETUP''' ##################### #creating tab panel tp tp = vizdlg.TabPanel(align = viz.ALIGN_LEFT_TOP, parent = canvas) #creating sub panels for tab panels(all layer data is stored in config.layers) storing sub panels in laypan layPan = {} for i, l in enumerate(self.layers): layPan[l] = vizdlg.GridPanel(parent = canvas) #creating dict of checkboxes for layers self.checkBox = {} for cb in [cb for l in self.layers.values() for cb in l]: self.checkBox[cb] = viz.addCheckbox(parent = canvas) #add layers and textboxes to panels for i in self.layers: for j in self.layers[i]: layPan[i].addRow([viz.addText(j), self.checkBox[j]]) tp.addPanel(i, layPan[i], align = viz.ALIGN_LEFT_TOP) ############################################### '''CREATING MODES PANEL''' ############################################### #creating labels for modes self.modeLabels = {} for l in self.modes.keys(): self.modeLabels[l] = viz.addText(l, parent = canvas) #creating radio buttons for modes self.modeGroup = viz.addGroup(parent = canvas) self.radioButtons = {} for rb in self.modes.keys(): self.radioButtons[rb] = viz.addRadioButton(self.modeGroup, parent = canvas) #creating grid panel to add mode to modeGrid = vizdlg.GridPanel(parent = canvas) #adding modes and radio buttons to grid panel for i in self.modes.keys(): modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]]) ################################### '''CREATE START AND STOP BUTTONS''' ################################### #creating grid panels to add start and back buttons to setGrid = vizdlg.GridPanel(parent = canvas) #create back and start buttons and add to grid panel backButton = viz.addButtonLabel('Back') startButton = viz.addButtonLabel('Start') setGrid.addRow([backButton, startButton]) #add back and state button actions vizact.onbuttondown(backButton, self.back) vizact.onbuttondown(startButton, self.start) ############################ '''ADD ITEMS TO GAME MENU''' ############################ #directions self.addItem(viz.addText('Select Parts of the Skeletal System You Wish to Puzzle and Select a Mode:', parent = canvas), fontSize = 30, align = viz.ALIGN_LEFT_TOP) #add tab panel to info panel tp.setCellPadding(5) self.addItem(tp, align = viz.ALIGN_LEFT_TOP) #modes self.addItem(modeGrid, align = viz.ALIGN_LEFT_TOP) #start and back buttons self.addItem(setGrid, align = viz.ALIGN_RIGHT_TOP) #change scale depending on display mode self.setScale(*[i*config.menuScale[self.name] for i in [1,1,1]]) #rendering bb = self.getBoundingBox() self.canvas.setRenderWorldOverlay([bb.width*1.8, bb.height*1.8], fov = bb.height*.1, distance = 1)
def __init__(self, canvas): vizinfo.InfoPanel.__init__(self, '', title='Game Menu', fontSize=100, align=viz.ALIGN_CENTER_CENTER, icon=False, parent=canvas) self.layers = config.layers self.modes = config.modes self.name = 'game' self.canvas = canvas self.active = False self.getPanel().fontSize(50) self.setPanelVisible(viz.OFF, animate=False) self.menuVisible = False ##################### '''LAYER TAB PANEL SETUP''' ##################### #creating tab panel tp tp = vizdlg.TabPanel(align=viz.ALIGN_LEFT_TOP, parent=canvas) #creating sub panels for tab panels(all layer data is stored in config.layers) storing sub panels in laypan layPan = {} for i, l in enumerate(self.layers): layPan[l] = vizdlg.GridPanel(parent=canvas) #creating dict of checkboxes for layers self.checkBox = {} for cb in [cb for l in self.layers.values() for cb in l]: self.checkBox[cb] = viz.addCheckbox(parent=canvas) #add layers and textboxes to panels for i in self.layers: for j in self.layers[i]: layPan[i].addRow([viz.addText(j), self.checkBox[j]]) tp.addPanel(i, layPan[i], align=viz.ALIGN_LEFT_TOP) ############################################### '''CREATING MODES PANEL''' ############################################### #creating labels for modes self.modeLabels = {} for l in self.modes.keys(): self.modeLabels[l] = viz.addText(l, parent=canvas) #creating radio buttons for modes self.modeGroup = viz.addGroup(parent=canvas) self.radioButtons = {} for rb in self.modes.keys(): self.radioButtons[rb] = viz.addRadioButton(self.modeGroup, parent=canvas) #creating grid panel to add mode to modeGrid = vizdlg.GridPanel(parent=canvas) #adding modes and radio buttons to grid panel for i in self.modes.keys(): modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]]) ################################### '''CREATE START AND STOP BUTTONS''' ################################### #creating grid panels to add start and back buttons to setGrid = vizdlg.GridPanel(parent=canvas) #create back and start buttons and add to grid panel backButton = viz.addButtonLabel('Back') startButton = viz.addButtonLabel('Start') setGrid.addRow([backButton, startButton]) #add back and state button actions vizact.onbuttondown(backButton, self.back) vizact.onbuttondown(startButton, self.start) ############################ '''ADD ITEMS TO GAME MENU''' ############################ #directions self.addItem(viz.addText( 'Select Parts of the Skeletal System You Wish to Puzzle and Select a Mode:', parent=canvas), fontSize=30, align=viz.ALIGN_LEFT_TOP) #add tab panel to info panel tp.setCellPadding(5) self.addItem(tp, align=viz.ALIGN_LEFT_TOP) #modes self.addItem(modeGrid, align=viz.ALIGN_LEFT_TOP) #start and back buttons self.addItem(setGrid, align=viz.ALIGN_RIGHT_TOP) #change scale depending on display mode self.setScale(*[i * config.menuScale[self.name] for i in [1, 1, 1]]) #rendering bb = self.getBoundingBox() self.canvas.setRenderWorldOverlay([bb.width * 1.8, bb.height * 1.8], fov=bb.height * .1, distance=1)