DHK hat geschrieben:Code: Alles auswählen
# ...
isset = 0
# ...
self.Bind(wx.EVT_LISTBOX, self.OnSelect, id=15)
def OnSelect(self, event):
        global isset
        global testus
        if isset == 1:
            testus.Destroy()
            isset = 0
        # ....
        testus = wx.Button(self, -1, 'Als neuen Skin wählen', (220, laenge))
        isset = 1
 
Hi DHK!
Mal im Ernst: Wenn du für so etwas schon ``global`` einsetzen musst, dann wirst du in der GUI-Programmierung nicht weit kommen. Verwende Variablen, die an die Frame-Klasseninstanz gebunden sind.
Dieses Beispiel soll nur aufzeigen, wie du mit Instanzvariablen (self.xxx) arbeiten könntest.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-1")
class MyFrame(wx.Frame):
    
    def __init__(
        self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
    ):
        
        wx.Frame.__init__(self, parent, id, title, size = size)
        
        panel = wx.Panel(self)
        
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
        
        # Spreizer (vbox_main)
        vbox_main.Add((0, 0), 1)
        
        # Durch die Spreizer in der vertikalen Mitte zentrierter, 
        # horizontaler wx.BoxSizer
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        vbox_main.Add(hbox, 0, wx.EXPAND | wx.ALL, 5)
        self.hbox = hbox # Variable an Klasseninstanz binden
        
        # Button 1
        button1 = wx.Button(panel, -1, u"Button 1")
        hbox.Add(button1, 0, wx.ALL, 5)
        self.button1 = button1 # Variable an Klasseninstanz binden
        button1.Bind(wx.EVT_BUTTON, self.on_button_click)
        
        # Spreizer (hbox); damit werden die Buttons nach aussen gedrückt
        hbox.Add((0, 0), 1)
        
        button2 = wx.Button(panel, -1, u"Button 2")
        hbox.Add(button2, 0, wx.ALL, 5)
        self.button2 = button2 # Variable an Klasseninstanz binden
        button2.Bind(wx.EVT_BUTTON, self.on_button_click)
        
        # Spreizer (vbox_main)
        vbox_main.Add((0, 0), 1)
    
    
    def on_button_click(self, event):
        """
        Eventhandler, der den angeklickten Button entfernt
        """
        
        button = event.GetEventObject()
        
        if button is self.button1:
            self.hbox.Detach(self.button1)
            self.button1.Destroy()
        else:
            self.hbox.Detach(self.button2)
            self.button2.Destroy()
def main():
    """Testing"""
    
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()
if __name__ == "__main__":
    main()
mfg
Gerold
