ich habe da ein Problem mit meinem Thread.
Wenn man auf den Button "Modales Fenster anzeigen" klickt, öffnet sich für einen kurzen Moment der Frame, bevor er irgendwo in den Hintergrund verschwindet und nicht mehr sichtbar ist.
(Das hier hab ich mir aus Beispielen aus dem Forum zusammen gesucht, mein orginal Programm wäre zu goß und das kleine Beispiel tut es ja auch schon)
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
import threading
wx.SetDefaultPyEncoding("iso-8859-15")
class MyModalFrame(wx.Frame):
def __init__(self, parent, title = "Modal Frame", size = wx.Size(500, 600)):
wx.Frame.__init__(self, parent, -1, title, size = size)
panel = wx.Panel(self)
panel.SetBackgroundColour("green")
self.MakeModal(True)
self.Bind(wx.EVT_CLOSE, self.on_close)
def on_close(self, event = None):
self.MakeModal(False)
event.Skip()
class MyThread(threading.Thread):
def __init__(self, parent):
threading.Thread.__init__(self)
self.__parent = parent
def run(self):
self.modal_frame = MyModalFrame(self.__parent)
self.modal_frame.Show()
class MyMainFrame(wx.Frame):
def __init__(
self, parent = None, title = "Example", size = wx.Size(350, 220)
):
wx.Frame.__init__(self, parent, -1, title, size = size)
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
vbox_main.AddStretchSpacer()
btn_modalframe = wx.Button(panel, label = u"Modales Frame anzeigen")
btn_modalframe.Bind(wx.EVT_BUTTON, self.show_modal_frame)
vbox_main.Add(btn_modalframe, 0, wx.CENTER)
vbox_main.AddStretchSpacer()
def show_modal_frame(self, event = None):
t = MyThread(self)
t.start()
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyMainFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()