Ich versuche, ein Programm zum Anzeigen einer Tabelle mit Kivy zu machen. Hier habe ich die Tabellennamen als Schaltflächen, und die Werte sind durch Etiketten definiert. Mit einer Funktion, ich setze Etiketten nach der Anzahl der Zeilen und Spalten, dann möchte ich sie extern mit einer anderen Funktion bevölkern, es wirft einen Index_Error. Heres mein ganzer Code.Nicht in der Lage, Etikettentext in Kivy Python dynamisch zu ändern
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)
Ich möchte eine alternative Lösung, um den Labelname nur durch den Aufruf einer Funktion zu aktualisieren. Ich weiß, dass Labels in Python nicht direkt indiziert werden können, aber gibt es alternative Lösungen?
Es ist die AddLabel_Text-Funktion, die das Problem verursacht. Diese andere Aussage wird absichtlich auskommentiert. – FaultyProgrammer3107
Es verursacht das Problem, weil Sie nicht richtig gebaut, wie ich in meiner Antwort –
Ok, jetzt Theres ein anderes Problem. Es zeigt nur eine Zeile und nicht alle an und zeigt nicht das letzte Element in jeder Zeile an. – FaultyProgrammer3107