Я пытаюсь создать программу для отображения таблицы с использованием Kivy. Здесь у меня есть имена таблиц в качестве кнопок, а значения определяются метками. Используя функцию, я помещаю метки в соответствии с количеством строк и столбцов, , тогда я хочу заполнить их извне с помощью другой функции, она выдает Index_Error. Вот мой весь код.Невозможно динамически изменять текст метки в Kivy Python
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.uix.button import Button
from kivy.app import runTouchApp
class TableView(GridLayout):
Col_Names = ["Date","Vendor","Country","MOU","ASR","AOU"]
Label_List =[]
MyListOfElements = [['1sample1','1sample2','1sample3','1sample4','1sample5','1sample6'],
['2sample1','2sample2','2sample3','2sample4','2sample5','2sample6'],
['3sample1','3sample2','3sample3','3sample4','3sample5','3sample6'],
['4sample1','4sample2','4sample3','4sample4','4sample5','4sample6']]
def AddLables(self,columns, rows):
self.LabelRow = []
for i in range(columns):
for j in range(rows):
lbl = Label(size_hint_y =None, size_hint_x = None , width =30)
self.layout.add_widget(lbl)
self.LabelRow.append(lbl)
self.Label_List.append(self.LabelRow)
def AddLabel_Text(self,columns, rows):
for i in range(columns):
for j in range(rows):
self.Label_List[i][j].text = self.MyListOfElements[i][j]
def __init__(self,**kwargs):
self.layout = GridLayout(cols = len(self.Col_Names), padding =5)
self.layout.bind(minimum_height=self.layout.setter('height'))
for i in range(len(self.Col_Names)):
btn = Button(text=self.Col_Names[i], size_hint_y=None, height=30)
self.layout.add_widget(btn)
self.AddLables(4,6)
self.AddLabel_Text(4,6)
if __name__ == '__main__':
Table = TableView()
runTouchApp(Table.layout)
Я хочу альтернативное решение для обновления имени ярлыка, просто вызвав функцию. Я знаю, что ярлыки в python не могут быть напрямую проиндексированы, но есть ли альтернативное решение?
Это функция AddLabel_Text, вызывающая проблему. Это другое заявление задумано сознательно. – FaultyProgrammer3107
Это вызывает проблему, потому что вы не строили - это правильно, как я сказал в своем ответе –
Хорошо, теперь это другая проблема. Он отображает только одну строку, а не все, и не отображает последний элемент в каждой строке. – FaultyProgrammer3107