2010-05-12 4 views
0

J'utilise wxPython pour créer un assistant en utilisant le contrôle wxWizard. J'essaye de dessiner un rectangle de couleur mais quand je cours l'application, il semble y avoir un remplissage d'environ 10px de chaque côté du rectangle. Cela vaut pour tous les autres contrôles aussi. Je dois les compenser un peu pour qu'ils apparaissent exactement là où je les veux. Y a-t-il un moyen de retirer ce rembourrage? Voici la source de la page de l'assistant de base.Supprimer le remplissage dans wxWizard de wxPython

class SimplePage(wx.wizard.PyWizardPage): 
    """ 
    Simple wizard page with unlimited rows of text. 
    """ 
    def __init__(self, parent, title): 
     wx.wizard.PyWizardPage.__init__(self, parent) 
     self.next = self.prev = None 
     #self.sizer = wx.BoxSizer(wx.VERTICAL) 
     title = wx.StaticText(self, -1, title) 
     title.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD)) 
     #self.sizer.AddWindow(title, 0, wx.ALIGN_LEFT|wx.ALL, padding) 
     #self.sizer.AddWindow(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.ALL, padding) 
     # self.SetSizer(self.sizer) 
     self.Bind(wx.EVT_PAINT, self.OnPaint) 

    def OnPaint(self, evt): 
     """set up the device context (DC) for painting""" 
     self.dc = wx.PaintDC(self) 
     self.dc.BeginDrawing() 
     self.dc.SetPen(wx.Pen("grey",style=wx.TRANSPARENT)) 
     self.dc.SetBrush(wx.Brush("grey", wx.SOLID)) 
     # set x, y, w, h for rectangle 
     self.dc.DrawRectangle(0,0,500, 500) 
     self.dc.EndDrawing() 
     del self.dc 

    def SetNext(self, next): 
     self.next = next 

    def SetPrev(self, prev): 
     self.prev = prev 

    def GetNext(self): 
     return self.next 

    def GetPrev(self): 
     return self.prev 

    def Activated(self, evt): 
     """ 
     Executed when page is being activated. 
     """ 
     return 

    def Blocked(self, evt): 
     """ 
     Executed when page is about to be switched. Switching can be 
     blocked by returning True. 
     """ 
     return False 

    def Cancel(self, evt): 
     """ 
     Executed when wizard is about to be canceled. Canceling can be 
     blocked by returning False. 
     """ 
     return True 

Merci les gars.

Répondre

1

Je ne peux pas vérifier ceci (je signalerais comme commentaire mais je n'ai pas assez de réputation).

Sur mon système, le code ci-dessus avec

if __name__ == "__main__": 
    app = wx.App(0) 
    frame_1 = wx.wizard.Wizard(None) 
    s = SimplePage(frame_1,"") 

    app.SetTopWindow(frame_1) 
    s.Show() 
    frame_1.Show() 
    app.MainLoop() 

donne pas de frontière sur le DC (il y a une frontière qui fait partie de la décoration de fenêtre de niveau supérieur.

J'ai vérifié cela sur les fenêtres (WX 2.8.10.1 python 2.4.4) et linux (wx 2.8.6.1 gtk)

+0

J'ai essayé votre exemple et ça a bien fonctionné, puis j'ai essayé le mien à nouveau et ce n'est pas le cas.() 'méthode et la méthode' Wizard.RunWizard() 'que j'utilise, je suis retourné à la lecture de la documentation. o avoir une valeur par défaut d'une bordure de 5px ou quelque chose. J'ai utilisé la commande suivante, les frontières ont disparu 'Wizard.SetBorder (-5)'. Ça a quelque chose à voir avec les calibreurs mais je n'en utilise pas. Mauvaise pratique, je sais. Merci quand même. –

Questions connexes