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
