GUIのようなテーブルに行を追加しようとしています。 これらの行はラベルのリストになります。 - その ラベル内のテキストになります文字列のリストを追加するには動的更新Kivyラベルのテキストを読み取ることができません
- のAddRow:更新され 各行は、そのクラスの次のメソッドがあります。
- AddLabel -
- をその行にラベルを追加し、ラベルのリストを追加AddLabelRow - 実際の表にリスト行を作成し、 テキストへ
- 「空」ChangeLableTextを初期化は、 - 文字列の入力リストを受け取り、そのクラスのラベル内の文字列を変更します。
は、私は、このクラスのオブジェクトContentList []のリストを初期化メソッドを呼び出す しかし、オブジェクトのChangeLabelTextが呼び出されていない問題で、ContentListのためのテキストのみが[0]に更新されています。
import json
import requests
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 AddContent(GridLayout):
#response = requests.get("http://localhost:10010/")
# Get the response data as a python object. Verify that it's a dictionary.
#data = response.json()[3]
#Column_keys = ["country", "date", "answered_calls", "total_calls", "asr", "mou", "aou"]
RowList = []
Label_List = []
size = 0
def AddRow(self, InputList):
self.RowList = InputList
self.size = len(InputList)
def AddLabel(self,LayoutObj):
lbl = Label(size_hint_y = None, height = 30)
LayoutObj.add_widget(lbl)
return lbl
def AddLabelRow(self,LayoutObj):
for i in range(self.size):
Lbl = self.AddLabel(LayoutObj)
Lbl.text = "empty"
#self.Label_List[i].text = data[Column_keys[i]]
#Lbl.text = str(self.data[self.Column_keys[i]])
self.Label_List.append(Lbl)
def ChangeLabel_ListText(self, TextList):
for i in range(self.size):
#self.Label_List[i].text = data[Column_keys[i]] #data is fetched from Db
self.Label_List[i].text = TextList[i]
class TableView(GridLayout):
Col_Names = ["Date","Vendor","Country","MOU","ASR","AOU"]
ContentList = [AddContent(),AddContent(),AddContent()]
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.ContentList[0].AddRow(['1sample1','1sample2','1sample3','1sample4','1sample5','1sample6'])
self.ContentList[1].AddRow(['2sample1','2sample2','2sample3','2sample4','2sample5','2sample6'])
self.ContentList[2].AddRow(['3sample1','3sample2','3sample3','3sample4','3sample5','3sample6'])
for i in range(3):
self.ContentList[i].AddLabelRow(self.layout)
self.ContentList[2].ChangeLabel_ListText(['a','b','c','d','e','f'])
if __name__ == '__main__':
Table = TableView()
runTouchApp(Table.layout)
線self.ContentList[2].ChangeLabel_ListText(['a','b','c','d','e','f'])
更新インデックスに与えられるどんな数の最初の行のみ。
私はこの1週間、私の頭を壊しています。私は当初、同じ出力を出した2つのクラスではなく、1つのクラスでこれをやっていました。 ヘルプが大いに役立ちます。ありがとう!
私の答えはあなたの問題を解決しました:ここ
は完全なソリューションですか?そうでない場合は、私に知らせてください。はいの場合は、それを合格とマークすることを検討してください。 – yogabonito
あなたの答えをありがとう。できます。 – FaultyProgrammer3107