from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'demo' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 # Set Treatments treatments = { "Xiao": "Bonus-Control", "Xuhang": "Bonus-Limit", "June": "Control-Limit", "Chen": "Control-Control", } class Subsession(BaseSubsession): pass class Group(BaseGroup): pass def change(label): return models.IntegerField(initial=0, choices=[[-1, '减少'], [0, '不变'], [1, '增加']], label=label,widget=widgets.RadioSelect) class Player(BasePlayer): phone = models.StringField(label = "您的手机号是多少") single_choice = models.IntegerField(widget=widgets.RadioSelect, choices=[1,2,3], label = '单选题') likert = models.IntegerField(widget=widgets.RadioSelectHorizontal, choices=[1,2,3,4,5], label = 'likert') shop_decrease = models.IntegerField(label = "Slider") feedback = models.LongStringField(label = "请输入您的反馈") # S1score = change("Q1") # S2score = change("Q2") # PAGES class Welcome(Page): form_fields = ['phone'] form_model = 'player' class Instruction(Page): pass class ResultsWaitPage(WaitPage): pass class Question(Page): form_fields = ['single_choice', 'likert', 'shop_decrease', 'feedback'] form_model = 'player' @staticmethod def vars_for_template(player: Player): t = C.treatments[player.participant.label] return {"treatment": t} class Upload(Page): pass class Pay(Page): @staticmethod def vars_for_template(player: Player): pay_code = "shop" + player.phone[-4:] return {"pay_code": pay_code} page_sequence = [Welcome, Instruction, Question, Upload, Pay]