Hallo Jungs, ich bin neu mit Kivy, ich mache einen kleinen Code, der den Eingabewert und setzen Sie es auf den Widget Kinder Wert.Wie setze ich einen Wert auf ein bestimmtes Widget Kinder
Das Ziel ist, dass, wenn ich auf die Schaltfläche Hinzufügen klicke, das Widget der ersten Zeile hinzugefügt wird und den Wert von TextInput annimmt. Und wenn ich den TextInput-Wert ändere und auf Hinzufügen klicke, wird eine zweite Zeile des Widgets hinzugefügt und es wird der neue TextInput-Wert enthalten.
Bitte lesen Sie meinen Code:
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.button import Button
kv_string = Builder.load_string('''
<CustomRemBtn>:
Button:
id: remBtn
text: 'Remove'
<CostumWidget>:
TextInput:
size_hint_x: None
width: 150
TextInput:
size_hint_x: None
width: 150
<MScreen>:
FloatLayout:
Button:
pos: root.x,root.top-self.height
id: main_add
text: 'Add'
size_hint: .1,.05
on_release: root.add_customWidget(True)
TextInput:
pos: root.x,root.top-main_add.height-self.height
id: textIn
size_hint: .3,.05
''')
class CustomRemBtn(BoxLayout):
def remove(self):
self.parent.removeFunction()
class CostumWidget(BoxLayout):
def labelers(self):
self.parent.floatbase()
class Float_Layout(FloatLayout):
def floatbase(self):
self.parent.add_customWidget()
def removeFunction(self):
self.parent.remove_customWidget()
class AddRem(Widget):
def __init__(self,**kwargs):
super(AddRem,self).__init__(**kwargs)
self.orientation = "vertical"
self.count = 0
self.customLayout = Float_Layout()
self.add_widget(self.customLayout)
class MScreen(Screen,AddRem):
def add_customWidget(self,*args):
self.y1 = (self.top - ((self.count+1)*40)-110)
self.count += 1
self.custWidgets = CostumWidget(size_hint=(.1,.05), pos=(100, 480-(self.count*30)))
self.removeBtn = CustomRemBtn(size_hint=(.1,.05), pos=(400, 480-(self.count*30)))
if self.count == 1:
self.customLayout.add_widget(self.custWidgets)
self.customLayout.add_widget(self.removeBtn)
else:
self.customLayout.remove_widget(self.customLayout.children[0])
self.customLayout.add_widget(self.custWidgets)
self.customLayout.add_widget(self.removeBtn)
for i2 in self.customLayout.children:
for x in range(len(i2.children)):
i2.children[x].text=self.ids.textIn.text
print(i2.children[x].text)
class myApp1(App):
def build(self):
return SManage
SManage = ScreenManager()
SManage.add_widget(MScreen())
if __name__ == "__main__":
myApp1().run()
aber mein Problem ist, dass es mit meinem Code nicht funktioniert und im stuck, jedes Mal wenn ich den Wert des TextInput- ändern, werden alle Widget Kinder den gleichen Wert haben .
Vielen Dank und ich hoffe auf eine Lösung oder irgendwelche Vorschläge.