def _clickable_numeric_input(title, start_at): # copied from the 0.7.0 release of expyriment # https://github.com/expyriment/expyriment/blob/81acb8be1a2abcecdbbfe501e9c4f662c9ba6620/expyriment/control/_experiment_control.py#L96 background_stimulus = stimuli.BlankScreen(colour=(0, 0, 0)) fields = [ stimuli.Circle(diameter=200, colour=(70, 70, 70), position=(0, 70)), stimuli.Circle(diameter=200, colour=(70, 70, 70), position=(0, -70)), stimuli.Rectangle(size=(50, 50), colour=(70, 70, 70), position=(120, 0)) ] fields[0].scale((0.25, 0.25)) fields[1].scale((0.25, 0.25)) # stimuli.TextLine(text="-", text_size=36, position=(0, -70), # text_font="FreeMono", # text_colour=(0, 0, 0)), plusminus = [ stimuli.TextLine(title, text_size=24, text_colour=misc.constants.C_EXPYRIMENT_PURPLE, position=(-182, 0)), stimuli.FixCross(size=(15, 15), position=(0, 70), colour=(0, 0, 0), line_width=2), stimuli.FixCross(size=(15, 2), position=(0, -70), colour=(0, 0, 0), line_width=2), stimuli.TextLine(text="Go", text_size=18, position=(120, 0), text_colour=(0, 0, 0)) ] number = int(start_at) while True: text = stimuli.TextLine(text="{0}".format(number), text_size=28, text_colour=misc.constants.C_EXPYRIMENT_ORANGE) btn = io.TouchScreenButtonBox(button_fields=fields, stimuli=plusminus + [text], background_stimulus=background_stimulus) btn.show() key, rt = btn.wait() if key == fields[0]: number += 1 elif key == fields[1]: number -= 1 if number <= 0: number = 0 elif key == fields[2]: break return (number)
def _clickable_numeric_input(title, start_at, scale=1.0): positions = [(100*scale, 0), (-100*scale, 0), (300*scale, -200*scale)] btn_colour = misc.constants.C_DARKGREY btn_size = (int(70*scale), int(70*scale)) btn_text_colour = (0, 0, 0) pos_title = (0, 100*scale) title_text_colour = misc.constants.C_GREY number_text_colour = misc.constants.C_GREY buttons = [stimuli.Rectangle(size=btn_size, colour=btn_colour, position=pos) for pos in positions] plus_width = 2*scale if expyriment_version[0] == 7 else 3*scale minus_width = 3*scale labels = [ stimuli.TextLine(text='OK', text_size=int(30*scale), position=positions[2], text_colour=btn_text_colour), stimuli.FixCross(size=(40*scale, 40*scale), position=positions[0], colour=btn_text_colour, line_width=plus_width), stimuli.FixCross(size=(40*scale, 3*scale), position=positions[1], colour=btn_text_colour, line_width=minus_width), stimuli.TextLine(title, text_size=int(30*scale), text_colour=title_text_colour, position=pos_title) ] number = int(start_at) while True: current_num = stimuli.TextLine(text=str(number), text_size=int(40*scale), text_colour=number_text_colour) button_box = io.TouchScreenButtonBox(buttons, labels+[current_num]) button_box.show() key = button_box.wait()[0] if key == buttons[0]: number = number + 1 elif key == buttons[1]: number = max(number - 1, 1) elif key == buttons[2]: return(number) return(number)
return mark_position - line.position[0] ### init ### exp = control.initialize() # create touch button box buttonA = stimuli.Rectangle(size=(80, 40), position=(-60, 0)) buttonB = stimuli.Rectangle(size=(80, 40), position=(60, 0)) textA = stimuli.TextLine(text="quit", position=buttonA.position, text_colour=misc.constants.C_WHITE) textB = stimuli.TextLine(text="next", position=buttonB.position, text_colour=misc.constants.C_WHITE) touchButtonBox = io.TouchScreenButtonBox(button_fields=[buttonA, buttonB], stimuli=[textA, textB]) ### start ### control.start(exp) exp.mouse.show_cursor() # trial loop while True: # find random position rx, ry = ((exp.screen.size[0] - line_length) / 2, (exp.screen.size[1] - 50) / 2) pos = [ design.randomize.rand_int(-rx, rx), design.randomize.rand_int(-ry, ry) ] # present task judgment = line_bisection_task(line_length, position=pos)
s = stimuli.TextLine(sentence,text_bold=True,text_size=25,\ text_colour=(255,255,255),position=(0, 100)) t.set_factor("sentence", sentence) t.add_stimulus(s) block.add_trial(t) exp.add_block(block) exp.add_data_variable_names(["sentence", "agreement"]) #Starting control.start() instructions_1.present() kb.wait(misc.constants.K_SPACE) instructions_2.present() kb.wait(misc.constants.K_SPACE) for trial in exp.blocks[0].trials: BB = io.TouchScreenButtonBox(list_img) BB.create() BB.add_stimulus(trial.stimuli[0]) BB.show() mouse.show_cursor() button, rt = BB.wait() agreement = get_resp(button) exp.data.add([trial.get_factor("sentence"), agreement]) exp.screen.clear() exp.screen.update() exp.clock.wait(1500) #Ending control.end()