Dynamische Layout
Verfasst: Freitag 24. April 2009, 14:38
Hallo liebes Forum!
Ich habe eine kleine GUI erstellt... soweit nichts besonderes. Darin erstelle ich in einer For-Schleife 3 Labels, die ich in meine "Collection" Labels einfüge. Die Collection ist einfach eine Liste... Ich habe auch einen Event-Handler zu jedem Label hinzugefügt. Wenn man auf ein Label klickt ändert sich die Hintergrundfarbe des panels....
was nun zu meinem eigentilchen Problem führt. Ich will nicht die Hintergrundfarbe des panels ändern ich will die Hintergrundfarbe des Label auf das ich geklickt habe ändern. Wie weiß der Eventhandler aber von welchem Label aus der Klick ausgeführt wurde?? Wie muss ich den Eventhandler schreiben, damit immer das Label, auf das ich klicke eine andere Farbe bekommt?
Ich will ja nur einen Eventhandler haben, der alle Klick-Events auf eines der Labels behandelt, und eben das Aussehen des geklickten Labels ändert..
anbei mal mein Code:
Was ist der Sinn des Ganzen...
Ich möchte eine GUI, bei der ich beliebig viele Labels machen kann, die dann auf Klick ihre Farbe ändern. Die Position der Labels wird mit einer noch ausstehenden Methode festgelegt, je nachdem wieviele Labels es dann sind. Dadurch muss ich die Labels nicht händisch positionieren. Sollte ich 500 labels benötigen, dann mache ich halt 10 Zeilen zu 50 Labels und sollte ich nur 300 brauchen, dann eben 10 zeilen mit 30 Labels... oder wie auch immer... und jedes Label ist über die Collection labels zu erreichen... jedenfalls sollte jedes Label bei klick seine Farbe ändern können und ich will nur einen Eventhandler dafür.
Vielleicht kann ja wer helfen?
Danke und LG
Roland
Ich habe eine kleine GUI erstellt... soweit nichts besonderes. Darin erstelle ich in einer For-Schleife 3 Labels, die ich in meine "Collection" Labels einfüge. Die Collection ist einfach eine Liste... Ich habe auch einen Event-Handler zu jedem Label hinzugefügt. Wenn man auf ein Label klickt ändert sich die Hintergrundfarbe des panels....
was nun zu meinem eigentilchen Problem führt. Ich will nicht die Hintergrundfarbe des panels ändern ich will die Hintergrundfarbe des Label auf das ich geklickt habe ändern. Wie weiß der Eventhandler aber von welchem Label aus der Klick ausgeführt wurde?? Wie muss ich den Eventhandler schreiben, damit immer das Label, auf das ich klicke eine andere Farbe bekommt?
Ich will ja nur einen Eventhandler haben, der alle Klick-Events auf eines der Labels behandelt, und eben das Aussehen des geklickten Labels ändert..
anbei mal mein Code:
Code: Alles auswählen
import wx
import wx.lib.stattext
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, 'wx.lib.stattext.GenStaticText',(300, 150), (320, 250))
self.panel = wx.Panel(self)
self.panel.SetBackgroundColour("white")
self.labels =[]
for label in range(3):
self.labels.append(wx.lib.stattext.GenStaticText(self.panel, -1, 'Label', (label * 35 + 5, 8)))
self.labels[label].Bind(wx.EVT_LEFT_DCLICK, self.labelClick, self.labels[label])
self.labels[label].SetBackgroundColour('red')
self.Show(True)
def labelClick(self,event):
self.panel.SetBackgroundColour('yellow')
self.Refresh()
application = wx.PySimpleApp()
window = MyFrame()
application.MainLoop()
Ich möchte eine GUI, bei der ich beliebig viele Labels machen kann, die dann auf Klick ihre Farbe ändern. Die Position der Labels wird mit einer noch ausstehenden Methode festgelegt, je nachdem wieviele Labels es dann sind. Dadurch muss ich die Labels nicht händisch positionieren. Sollte ich 500 labels benötigen, dann mache ich halt 10 Zeilen zu 50 Labels und sollte ich nur 300 brauchen, dann eben 10 zeilen mit 30 Labels... oder wie auch immer... und jedes Label ist über die Collection labels zu erreichen... jedenfalls sollte jedes Label bei klick seine Farbe ändern können und ich will nur einen Eventhandler dafür.
Vielleicht kann ja wer helfen?
Danke und LG
Roland