2016-04-16 10 views
1

Ich habe ein Python-Skript und eine Kivy-Datei, um die Schnittstelle zu erstellen.kivy: Wie aktualisiere ich eine Objekteigenschaft?

Ich möchte den Text in einem Etikett dynamisch durch Pythons Eingang (Netzwerkeingang) aktualisieren.

Also habe ich eine Eigenschaft für das Haupt Kivy widget:

class UserForm(BoxLayout): 
    txt = StringProperty("") 

innerhalb von Kivy ich on_txt verwenden einige Änderungen rufen innerhalb der Widgets unter:

<UserForm>: 
    orientation: 'vertical' 
    name: name_input.text 
    barcode: barcode_input.text 
    on_txt: print ("Aha"); barcode_label.text = "I CHANGED FOR THE BETTER" 
    Label: 
     id: barcode_label 
     text: "barcode (EAN or SN):" 
     font_size: 30 

Es druckt "Aha" und wirft keine Fehler, aber es ändert auch nicht den Text des Etiketts.

Schätzen Sie jede Hilfe oder einen Hinweis!

Antwort

2

dieses

in Python tun
class UserForm(Screen): 
    on_enter(self): 
    self.barcode_label.text='I CHANGED FOR THE BETTER' 

dies wird den Code dieses jedes Mal wenn Sie den Bildschirm Alternative eingeben ändern, wenn Sie wollen etwas anderes diese

class UserForm(Screen): 
    def changetext(self): 
     self.barcode_label.text='I CHANGED FOR THE BETTER' 

und in ur kv-Datei versuchen dies tun

<UserForm>: 
    orientation: 'vertical' 
    name: name_input.text 
    barcode: barcode_input.text 
    barcode_label:barcode_label 
    Label: 
     id: barcode_label 
     text: "barcode (EAN or SN):" 
     font_size: 30 
    Button: 
     text: 'press me' 
     pos_hint:{"center_x":0.5,"center_y":0.3} 
     size_hint:(0.1,0.1) 
     on_press:root.changetext() 

diese giv Sie können eine Taste drücken, um den Text zu ändern lassen Sie mich wissen, wenn Sie irgendwelche Fehler bekommen

+0

thx! das zweite war was ich suchte. das erste scheint noch attraktiver, aber schneller Test hatte nicht die gewünschte Wirkung (blieb auf kivy Sprache definierten Text). – gauguerilla

+0

aber Follow-up: Wie würde ich die Changetext() -Methode von Python aufrufen und immer noch das gleiche Update bekommen? z.B. wenn ich einen anderen Thread habe, der mit einem Server läuft, der auf Netzwerksignale wartet, oder wenn Python Eingaben verarbeitet, bevor er sie an die kivy-Widgets zurückgibt ... – gauguerilla

+0

Ich denke nicht, dass du diese Funktion außerhalb dieser Klasse aufrufen kannst. Aber erkläre genau, was du willst, versuche mein Bestes, um dir zu helfen, wenn du den Bildschirm auffrischen willst, kann ich dir dabei helfen oder so? Können Sie bitte erklären Sie Ihr Programm abit mehr, so verstehe ich, was Sie tun müssen – Abul

Verwandte Themen