Один из способов сделать это - добавить id
к Label
:
<AsianWindow>
name:"asian"
GridLayout:
cols:1
Label:
id: goto # Use this id to access the Label
text: "Go to:"
Button:
text: "Go Back"
on_release:
app.root.current="food"
root.manager.transition.direction="right"
Чтобы упростить задачу, поместите метод asianBtn()
в класс AsianWindow
:
class AsianWindow(Screen):
def asianBtn(self):
self.ids.goto.text = random.choice(FoodPlaces['Asian'])
И измените его вызов в kv
на:
<FoodWindow>:
name: "food"
GridLayout:
cols:1
Label:
text:"Pick a Food Type"
Button:
text: "Asian"
on_release:
app.root.current="asian"
root.manager.transition.direction="left"
app.root.current_screen.asianBtn()
Button:
text: "Go Back"
on_release:
app.root.current="main"
root.manager.transition.direction="right"
С помощью метода asianBtn()
в классе AsianWindow
путь к goto
Label
проще, и путь к самому методу asianBtn()
проще (поскольку current_screen
- это AsianWindow
в этой точке).
Еще более простой способ - просто использовать on_enter()
метод AsianWindow
, так что случайный выбор отображается всякий раз, когда отображается AsianWindow
. для этого просто замените метод asianBtn()
на метод on_enter()
:
class AsianWindow(Screen):
def on_enter(self, *args):
self.ids.goto.text = random.choice(FoodPlaces['Asian'])
И теперь вам даже не нужно вызывать asianBtn()
из Button
:
<FoodWindow>:
name: "food"
GridLayout:
cols:1
Label:
text:"Pick a Food Type"
Button:
text: "Asian"
on_release:
app.root.current="asian"
root.manager.transition.direction="left"
Button:
text: "Go Back"
on_release:
app.root.current="main"
root.manager.transition.direction="right"