wxPython - PaintDC non rafraîchissant
import wx
class TestDraw(wx.Panel):
def __init__(self,parent=None,id=-1):
wx.Panel.__init__(self,parent,id)
self.SetBackgroundColour("#FFFFFF")
self.Bind(wx.EVT_PAINT,self.onPaint)
def onPaint(self, event):
event.Skip()
dc=wx.PaintDC(self)
dc.BeginDrawing()
width=dc.GetSize()[0]
height=dc.GetSize()[1]
if height<width:
self.drawTestRects(dc)
else:
dc.Clear()
dc.EndDrawing()
def drawTestRects(self,dc):
dc.SetBrush(wx.Brush("#000000",style=wx.SOLID))
dc.DrawRectangle(50,50,50,50)
dc.DrawRectangle(100,100,100,100)
class TestFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(640,480))
self.mainPanel=TestDraw(self,-1)
self.Show(True)
app = wx.App(False)
frame = TestFrame(None,"Test App")
app.MainLoop()
Ce code ne doit dessiner les rectangles de test que lorsque la hauteur est inférieure à la largeur, sinon la fenêtre doit rester vide. Toutefois, si vous modifiez le redimensionnement de la fenêtre, le panneau n'est pas redessiné à moins qu'il ne soit déplacé hors de la fenêtre. Qu'est-ce que je fais mal?
Sur le gestionnaire wx.EVT_SIZE, appelez 'self.Refresh()'. –