Kivy: Text in Button updaten

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
mhatweb
User
Beiträge: 1
Registriert: Samstag 12. Mai 2018, 10:22

Samstag 12. Mai 2018, 10:36

Hallo allerseits,

mich plagt folgendes Problem: Ich versuche die Beschriftung eines Buttons je nach Zustand zu ändern. Der Button ist im normalen Zustand mit "Show Stop" beschriftet. Wird er gedrückt und losgelassen öffnet sich ein Popupfenster mit einem Warnhinweis und zudem soll der Show-Stop-Button nun die Schrift "Gestoppt" tragen anstatt "Show Stop". In diesem Popupfenster gibt es zwei Buttons, die beide das Popup wieder schließen und den Show-Stop-Button in die gleiche Ausgangslage wie vor Öffnen des Popups führen sollen, sprich: Er soll wieder die Aufschrift "Stop Show" tragen.
Was bisher funktioniert ist die Änderung der Aufschrift von "Stop Show" hin zu "Gestoppt" sobald der Button gedrückt wird. Wenn ich aber im Popupmenü auf einen der Buttons klicke und sich das Popupmenü wieder schließt behält der Show-Stop-Button seine Aufschrift "Gestoppt" bei. Mit print habe ich mir die Aufschrift ausgeben lassen, den der Button nach Schließen des Popups haben sollte, und diese Aufschrift ist tatsächlich wieder "Stop Show", aber angezeigt wird mir weiterhin "Gestoppt" auf dem Button. Würde mich sehr über Hilfe freuen!

Code: Alles auswählen

class Stopbutton(Button):
	Status = StringProperty("STOP SHOW")
	

	def stopButtonText(self,wert):

		self.Status=wert

		print(wert)


	def stoppressed(self):
		print("Stop wurde gedruckt!")
		StopPopup().open()
		self.stopButtonText("Gestoppt")


class StopPopup(Popup):

	def springBeginn(self):

		print("Springe zu Beginn!")

		wert='Stop Show'

		Xyz=Stopbutton()

		Xyz.stopButtonText(wert)
		self.dismiss()



	def fortfahren(self):

		print("Show fortfahren!")

		wert='Stop Show'

		Xyz=Stopbutton()

		Xyz.stopButtonText(wert)
		self.dismiss()
Und hier die .kv Datei:

Code: Alles auswählen

<Stopbutton>

	id: stopbutton
	text: root.Status

	on_release: self.stoppressed()

	color: 1,1,1,1

	text_size: self.size

	font_size: (self.width*0.2+self.height*0.2)/2

	background_normal: ''

	background_color: 0,0,0,0

	size_hint: 0.2, 1

	halign: 'center'

	valign: 'center'

	canvas.before:

		Color:

			rgba: (1,0,0,1) if self.state=='normal' else (1,1,1,1)

		RoundedRectangle:

			pos: self.pos

			size: self.size

			radius: [5,]

<StopPopup>:

    auto_dismiss: False

    size_hint: 0.5, 0.5

    background_color: 0,0,0,0

    separator_color: 1,1,1,1

    separator_height: (self.width*0.005+self.height*0.005)/2

    title: 'SHOW GESTOPPT'

    title_size: (self.width*0.05+self.height*0.05)/2

    title_align: 'center'

    canvas.before:

    	Color: 

    		rgba: 1,0,0,1

    	Rectangle:

    		pos: self.pos

    		size: self.size



    BoxLayout:

		orientation: 'vertical'

		Label:

			text: 'Vor Fortfahren bitte die Positionen aller Besucher*innen und Mitarbeiter*innen checken.'

			text_size: self.size

			font_size: (self.width*0.07+self.height*0.07)/2

			halign: 'center'

			valign: 'center'

			canvas.before:

				Color: 

					rgba: 1,0,0,1

				Rectangle:

					pos: self.pos

					size: self.size

    	BoxLayout:

			spacing: (self.height*0.02+self.width*0.02)/2

			padding: (self.width*0.04+self.height*0.04)/2

    		canvas.before:

				Color: 

					rgba: 1,0,0,1

				Rectangle:

					pos: self.pos

					size: self.size

			orientation: 'horizontal'

			Button:

				text: 'Springe zu Beginn'

				font_size: (self.width*0.1+self.height*0.1)/2

				color: 0,0,0,1

				on_release: root.springBeginn() 

				background_normal: ''

				background_color: 0.8,0.79,0.79,1

				

				

			Button:

				text: 'Show fortfahren ab hier'

				font_size: (self.width*0.1+self.height*0.1)/2

				color: 0,0,0,1

				on_release: root.fortfahren()

				background_normal: ''

				background_color: 0.8,0.79,0.79,1
Benutzeravatar
__blackjack__
User
Beiträge: 1040
Registriert: Samstag 2. Juni 2018, 10:21

Dienstag 26. Juni 2018, 10:09

`Stopbutton()` erzeugt ein *neues* Objekt, wenn Du daran etwas änderst, dürfte das nichts an dem vorhandenen Button ändern.
“Capitalism is the astounding belief that the most wickedest of men will do the most wickedest of things for the greatest good of everyone.” – John Maynard Keynes
Antworten