2011-05-15 3 views
5

Est-il possible de rendre une fenêtre wxPython redimensionnable à un certain taux? Je sais que vous pouvez désactiver le redimensionnement; Cependant, j'aimerais bien que lorsque la fenêtre a été redimensionnée, elle a conservé un certain rapport largeur/hauteur.Redimensionnement d'une fenêtre wxPython

Répondre

6

Une manière évidente de le faire serait de lier wx.EVT_SIZE à une fonction qui contraint le rapport d'aspect. Je ne suis pas certain que c'est la bonne façon de le faire, mais il fonctionne: (. Le passe-partout est emprunté à here)

import wx 

class SizeEvent(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title) 

     self.Bind(wx.EVT_SIZE, self.OnSize) 
     self.Centre() 
     self.SetSizeWH(400, 300) 
     self.Show(True) 

    def OnSize(self, event): 
     hsize = event.GetSize()[0] * 0.75 
     self.SetSizeHints(minW=-1, minH=hsize, maxH=hsize) 
     self.SetTitle(str(event.GetSize())) 

app = wx.App() 
SizeEvent(None, 1, 'sizeevent.py') 
app.MainLoop() 

-1

Je ne connais pas trop wxPython, mais ne pouvez-vous pas simplement réinitialiser la taille de la fenêtre à votre taille max/min que vous voulez une fois que l'utilisateur l'a réussi? De préférence dans l'événement qui détecte le redimensionnement?

+0

J'ai essayé, mais le redimensionnement directement la fenêtre de la manière évidente causée récursivité explosive. Définir des astuces de taille a bien fonctionné. – senderle

Questions connexes