: : : dice_slider: dice_slider dice_text: dice_text skill_slider: skill_slider skill_text: skill_text roll_button: roll_button result_label: result_label previous_results: previous_results BoxLayout: orientation: 'vertical' spacing: 10 size_hint: 1, 1 BoxLayout: orientation: 'horizontal' spacing: 10 center_x: root.center_x width: root.width Label: text: "Dice" SlavedSlider: id: dice_slider orientation: 'horizontal' min: 1 max: root.max_dice step: 1 value: int(root.max_dice / 2) on_value: root.slider_value_change(dice_slider) SlavedTextInput: id: dice_text multiline: False on_text: root.text_value_change(dice_text) text: str(int(root.max_dice / 2)) BoxLayout: orientation: 'horizontal' spacing: 10 width: root.width Label: text: "Skill" SlavedSlider: id: skill_slider orientation: 'horizontal' min: 1 max: root.max_skill step: 1 value: int(root.max_skill / 2) on_value: root.slider_value_change(skill_slider) SlavedTextInput: id: skill_text multiline: False on_text: root.text_value_change(skill_text) text: str(int(root.max_skill / 2)) Button: id: roll_button text: "Roll" on_press: root.roll_dice() Label: id: result_label text: "No result" ListView: id: previous_results adapter: root.previous_results_la