Как сделать random на Kivy, для Label, при нажатии на кнопку
Делаю программу, "Правда или действие", и столкнулся с такой проблемой. У меня не работает random, выбивает NameError: name 'random' is not defined, (извините если не правильно написал ошибку). Если что, Пишу на Kivy, в python вместе с Builder.
Вот код:
from kivy.app import App
from kivy.config import Config
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.anchorlayout import AnchorLayout
import random
Config.set("graphics", "resizable", "0")
Config.set("graphics", "width", "500")
Config.set("graphics", "height", "850")
category6 = [("Пригни 10 раз"), ("Закрой глаза")]
ListCategory6 = len(category6)
Builder.load_string("""
<MenuScreen>:
BoxLayout:
orientation:
"vertical"
spacing: 10
padding: [30]
Button:
text: "Начать игру'
background_color: [5, 1.7, 1, 5]
size_hint: [1, 0.1]
font_size: 50
on_press: root.manager.current = 'settings'
<SettingsScreen>:
BoxLayout:
orientation:
"vertical"
spacing: 10
padding: [30]
Button:
text: 'Назад'
size_hint: [1, 0.6]
background_color: [5, 1, 1, 5]
on_press: root.manager.current = "menu"
Label:
text: "Выбери возрастную категорию"
size_hint: [1, 0.5]
font_size: 35
Button:
text: "6+"
background_color: [2.3, 0.1, 4, 1]
font_size: 40
on_press: root.manager.current = "Six"
<SixScreen>:
AnchorLayout:
anchor_x: "center"
anchor_y: "top"
padding: [25]
Button:
text: "Назад"
background_color: [5, 1, 1, 5]
size_hint: [1, 0.07]
on_press: root.manager.current = 'settings'
AnchorLayout:
anchor_x: "center"
anchor_y: "bottom"
padding: [25]
Button:
text: "Получить Задание"
background_color: [0, 1.7, 0, 1]
size_hint: [1, 0.07]
on_press: root.manager.current = 'SixLabel'
Label:
text: "Задания 6+"
font_size: 50
<SixLabel>:
AnchorLayout:
anchor_x:
"center"
anchor_y:
"top"
padding: [25]
Button:
text: "Назад"
size_hint: [1, 0.07]
background_color: [5, 1, 1, 5]
on_press: root.manager.current = "Six"
Label:
text: random.randrange(0, ListCategory6)
""")
class MenuScreen(Screen):
pass
class SettingsScreen(Screen):
pass
class SixScreen(Screen):
pass
class SixLabel(Screen):
pass
class randsix(Screen):
pass
game = ScreenManager()
game.add_widget(MenuScreen(name = 'menu'))
game.add_widget(SettingsScreen(name = 'settings'))
game.add_widget(SixScreen(name = "Six"))
game.add_widget(SixLabel(name = "SixLabel"))
class PlayPutannyApp(App):
def build(self):
return game
if __name__ == "__main__":
PlayPutannyApp().run()
Ответы (1 шт):
Автор решения: Karlson21
→ Ссылка
.py
import random
category6 = [("Пригни 10 раз"), ("Закрой глаза")]
....
class SixLabel(Screen):
def random_task(self):
return str(random.choice(category6))
.kv
<SixLabel>:
....
Label:
text: root.random_task()