Как добавить виджеты в приложение Kivy с RecycleView - PullRequest
0 голосов
/ 12 марта 2020

У меня проблемы с этим приложением kivy, как мне добавить к нему кнопки? Я пытался использовать строитель строк для добавления меток, кнопок и других виджетов, но безуспешно. Мой код ориентирован таким образом, потому что я не мог заставить Recycleview работать должным образом, поэтому извините за беспорядок.

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.recycleview import RecycleView
import sqlite3
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.widget import Widget


Builder.load_string('''
<RV>:
    viewclass: 'Label'
    RecycleBoxLayout:
    default_size: None, dp(36)
    default_size_hint: 1, None
    size_hint_y: None
    height: self.minimum_height
    orientation: 'vertical'
''')


class RV(RecycleView):
    def __init__(self, **kwargs):
        super(RV, self).__init__(**kwargs)
        try:
            conn = sqlite3.connect('UserInfo.db')
            cursor = conn.cursor()
            sqlite_select_query = """SELECT * from Login"""
            cursor.execute(sqlite_select_query)
            records = cursor.fetchall()

            self.data = [{'text': str(row[0]), 'color': (0, 0, 0, 1)}
                     for row in records]
            cursor.close()

        except sqlite3.Error as error:
            print("Failed to read data from sqlite table")


class TestApp(App):
    def build(self):
        return RV()


def runApp():
    TestApp().run()
# if __name__ == '__main__':
#   TestApp().run()

1 Ответ

0 голосов
/ 12 марта 2020

Сначала вы должны сохранить ссылку на ваш RV экземпляр.
Что-то вроде self.rv = RV(), а затем return self.rv вместо return RV()

Затем вы должны добавить новый dict (с ключами text и color) в ваш список self.rv.data, для каждого нового элемента, который вы хотите.

После этого вам может потребоваться вызвать self.rv.refresh_from_data().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...