wx.StaticText; Das Zerstören von Textobjekten

Plattformunabhängige GUIs mit wxWidgets.
Antworten
qweet
User
Beiträge: 119
Registriert: Freitag 2. September 2005, 21:26

Sonntag 23. Oktober 2005, 11:17

Grüße,

erstmal der Code bevor ich erkläre, funktioniert:

Code: Alles auswählen

import wx

class MyProgram:
	y = 0
	
	def __init__(self, parent):
		self.panel = parent
		self.panel.Bind(wx.EVT_CHAR, self.LogKeyEvent)
		
	def LogKeyEvent(self, evt):
		text = wx.StaticText(self.panel, -1, 'This is just text')
		text.MoveXY(0, MyProgram.y)

		MyProgram.y += 20


app 		= wx.PySimpleApp()


frame 	= wx.Frame(None, -1, "Test")
panel 	= wx.Panel(frame, -1)

MyProgram(panel)
frame.Show(True)


app.MainLoop()
Das Programm gibt bei jedem Tastendruck den String
'This is just text'
auf einem Panel aus. Dabei wird der Text untereinander geschrieben.
Auch wird jedesmal für jeden Text ein neues Objekt angelegt und somit im Computer Speicher belegt, soweit ich das beurteilen kann.

Mein Ziel ist nun folgendes:
Wenn ich das 6. mal eine Taste drücke, soll das 1. Textobjekt zerstört werden.
Wenn ich das 7. mal eine Taste drücke, soll das 2. Textobjekt zerstört werden.
usw.

Die Ausgabe sollte dann eine folgende sein:

Code: Alles auswählen

1. SCHRITT
Zeile 1: This is just text
Zeile 2: This is just text
Zeile 3: This is just text
Zeile 4: This is just text
Zeile 5: This is just text
Zeile 6:
Zeile 7:

2. SCHRITT
Zeile 1: 
Zeile 2: This is just text
Zeile 3: This is just text
Zeile 4: This is just text
Zeile 5: This is just text
Zeile 6: This is just text
Zeile 7:

3. SCHRITT
Zeile 1: 
Zeile 2: 
Zeile 3: This is just text
Zeile 4: This is just text
Zeile 5: This is just text
Zeile 6: This is just text
Zeile 7: This is just text
Der Befehl um Textobjekte zu zerstören lautet
>>> wx.StaticText.Destroy()

Ich bräuchte eine Möglichkeit die einzelnen Textobjekte durchzunummerieren, so dass ich sie dann bei Bedarf zerstören kann.

Oder hat jemand vielleicht eine ganz andere Idee?

qweet
qweet
User
Beiträge: 119
Registriert: Freitag 2. September 2005, 21:26

Montag 24. Oktober 2005, 12:40

Die Lösung war einfacher als ich dachte.
Hier mein Code:

Code: Alles auswählen

import wx

class MyProgram:
	
	def __init__(self, parent):
		self.panel = parent

		text = [wx.StaticText(self.panel, -1, ''), wx.StaticText(self.panel, -1, '')]
		
		text[0].SetLabel('HI')
		
		text[1].SetLabel('CU')
		text[1].MoveXY(0, 20)
		
	#	text[0].Destroy()


app 		= wx.PySimpleApp()


frame 	= wx.Frame(None, -1, "Test")
panel 	= wx.Panel(frame, -1)

MyProgram(panel)
frame.Show(True)


app.MainLoop()
:roll: naja, aber wie auch drauf kommen so aus dem Freien heraus. -_-
Antworten