Ga naar hoofdinhoud

7.3 Kiezen uit een lijst

Hier bouw je op verder: Lijsten

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Moet de speler één ding kiezen uit meerdere mogelijkheden, dan heb je twee opties: een uitklapmenu of een rijtje keuzerondjes.

Het uitklapmenu​

play.new_dropdown toont de gekozen optie; klik erop en de hele lijst klapt open. De when_changed-functie krijgt twee dingen mee: de gekozen waarde en zijn plek in de lijst.

Spel laden...
import play

cirkel = play.new_circle(color='red', y=60)
menu = play.new_dropdown(options=["red", "green", "blue"], y=-100)
  1. Regel 4:

    De keuzes staan in een lijst. Wat je hier neerzet, ziet de speler in het menu.

Uitlezen zonder functie kan ook: menu.selected_value geeft de gekozen waarde, menu.selected_index de plek (0 is de eerste optie).

Keuzerondjes​

Bij keuzerondjes ziet de speler alle opties tegelijk, en er kan er maar één aan staan. Daarvoor werk je met een groep: de rondjes die bij elkaar horen stop je in dezelfde play.new_radio_group(), en die groep zorgt ervoor dat er nooit twee tegelijk geselecteerd zijn.

Spel laden...

Let op: when_changed zet je op de groep, niet op een los rondje. De waarde die je meekrijgt is de value van het rondje dat aan ging, en groep.selected_value geeft die waarde op elk moment.

Opdracht 7.3.a: Vormenkiezer​

Maak drie keuzerondjes: Klein, Normaal en Groot. De keuze bepaalt de straal van een cirkel (bijvoorbeeld 20, 50 en 90).

Klik hier voor een tip.

Geef elk rondje als value het getal als tekst mee (value="20"). In de when_changed-functie maak je er met int(waarde) weer een getal van.

Klik hier voor de oplossing.
import play

cirkel = play.new_circle(color='teal', radius=50, x=120)
groep = play.new_radio_group()
play.new_radio_button(label="Klein", value="20", group=groep, x=-150, y=60)
play.new_radio_button(label="Normaal", value="50", group=groep, x=-150, y=10, selected=True)
play.new_radio_button(label="Groot", value="90", group=groep, x=-150, y=-40)

@groep.when_changed
def maat_gekozen(waarde):
cirkel.radius = int(waarde)
Spel laden...