def OnPaint(self, evt):
- width, height = size =self.GetSize()
- bmp = wx.EmptyBitmap(width, height)
-
- dc = wx.MemoryDC()
- dc.SelectObject(bmp)
-
-
- self.Draw(dc, size)
-
- wdc = wx.PaintDC(self)
- wdc.BeginDrawing()
- wdc.Blit(0,0, size[0], size[1], dc, 0,0)
- wdc.EndDrawing()
-
- dc.SelectObject(wx.NullBitmap)
+ dc = wx.BufferedPaintDC(self)
+ self.Draw(dc, self.GetSize())
def OnEraseBackground(self, evt):
-#----------------------------------------------------------------------
+#---------------------------------------------------------------------------
+
+class TestPanel(wx.Panel):
+ def __init__(self, parent, log):
+ self.log = log
+ wx.Panel.__init__(self, parent, -1)
+
+ b = wx.Button(self, -1, "Show Threads sample", (50,50))
+ self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+
+ def OnButton(self, evt):
+ win = TestFrame(self, self.log)
+ win.Show(True)
+
+
+#---------------------------------------------------------------------------
+
def runTest(frame, nb, log):
- win = TestFrame(frame, log)
- frame.otherWin = win
- win.Show(True)
- return None
+ win = TestPanel(nb, log)
+ return win
#----------------------------------------------------------------------
+
overview = """\
The main issue with multi-threaded GUI programming is the thread safty
of the GUI itself. On most platforms the GUI is not thread safe and