Я новичок, пытаюсь создать приложение, в котором я могу сначала выбрать элементы из заранее определенного списка, а затем, на следующем экране, увидеть список только этих выбранных элементов.
Я сделал сетка с 2 столбцами: флажки и метки. Я составил списки из этих столбцов и заархивировал их вместе, чтобы получить «результирующий» список элементов, в которых соответствующие индексы флажков имеют состояние «вниз».
Однако я не могу обновить это result
список из класса ShopInput в класс SecondWindow.
Я пробовал много вещей, которые я нашел здесь, но, похоже, я полностью застрял. Может ли кто-нибудь посоветовать мне, как продолжить обновление списка результатов на втором экране?
Мой код:
shoppinglist.py:
import kivy
from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.uix.checkbox import CheckBox
from kivy.uix.scrollview import ScrollView
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
result = ["test", "test2", "test3"]
item_dictionary = {
"item1": "Cookies",
"item2": "Milk",
"item3": "Honey"
}
class ShopInput(Screen):
obj_listitem1 = ObjectProperty(None)
obj_listitem2 = ObjectProperty(None)
obj_listitem3 = ObjectProperty(None)
def button_press(self):
products = list(item_dictionary.values())
added_item_list = []
added_item_list.append(self.obj_listitem1.state)
added_item_list.append(self.obj_listitem2.state)
added_item_list.append(self.obj_listitem3.state)
global result
result.clear()
result.append([x for x, y in zip(products, added_item_list) if y == 'down'])
print(result) # Temporarily to see what gets added to the result list
added_item_list.clear()
class SecondWindow(Screen):
def __init__(self, **kwargs):
super(SecondWindow, self).__init__(**kwargs)
global result
self.add_widget(Label(text=(f'{result}')))
class WindowManager(ScreenManager):
pass
kv = Builder.load_file("shoppinglist.kv")
class ShoppingListApp(App):
def build(self):
return kv
if __name__ == "__main__":
ShoppingListApp().run()
список покупок. кв:
WindowManager:
ShopInput:
SecondWindow:
<ShopInput>:
name: "first"
obj_listitem1: listitem1
obj_listitem2: listitem2
obj_listitem3: listitem3
GridLayout:
cols: 1
rows: 3
size: root.width, root.height
padding: 2
Label:
text:"Make Your Shopping List"
size_hint_y:0.2
ScrollView:
do_scroll_x: False
do_scroll_y: True
size_hint_y:0.675
GridLayout:
cols: 2
size_hint_y: 1.5
height: self.minimum_height
Label:
text: "Add to list:"
Label:
text: "Product:"
CheckBox:
id: listitem1
Label:
text: "Cookies"
CheckBox:
id: listitem2
Label:
text: "Milk"
CheckBox:
id: listitem3
Label:
text: "Honey"
GridLayout:
cols: 2
size_hint_y:0.075
Button:
text:"Add"
on_press: root.button_press()
Button:
text:"Next"
on_release: root.manager.current = "second"
<SecondWindow>:
name: "second"
Спасибо!