IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

Ajuster la dimension de la fenêtre à un wx.StaticText qui change


Sujet :

wxPython

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Ajuster la dimension de la fenêtre à un wx.StaticText qui change
    Salut à tous !

    Je suis en train de coder un petit chrono pour faire cuire mes pattes !
    Rien de compliquer, quand on le lance, ça démarre, quand on le quitte, ça s'arrête.

    Mon problème est pour adapter les dimensions de la fenêtre à celle du wx.StaticText qui peut devenir de plus en plus large au fil du temps (plusieurs centaines d'heures, mais je voudrais faire ça propre).

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import wx
    import os, sys
     
    class Gui (wx.Frame):
    	def __init__ (self, titre):
    		wx.Frame.__init__(self, None, wx.ID_ANY, title=titre)
     
    		self.panel = wx.Panel(self, wx.ID_ANY)
    		sizer = wx.BoxSizer(wx.VERTICAL)
     
    		# ----------------------------------------------------------------------------------------------------------- Widgets
     
    		self.text = wx.StaticText(self.panel, wx.ID_ANY, u'00:00:00')
     
    		font = wx.Font(40, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
    		self.text.SetFont(font)
     
    		sizer.Add(self.text, flag=wx.ALIGN_CENTER|wx.ALL, border=20)
     
    		# ----------------------------------------------------------------------------------------------------------- Divers
     
    		# Sizer + Fit
    		self.panel.SetSizerAndFit(sizer)
    		self.Fit()
     
    		# Redimentionnable
    		self.SetMinSize(self.GetSize())
    		self.SetMaxSize(self.GetSize())
     
    		# Events
    		self.Bind(wx.EVT_TIMER, self.label)
     
    		# Lancement du chrono...
    		self.spend_time = 0
     
    		self.timer = wx.Timer(self)
    		self.timer.Start(1000)
     
    	def label (self, time):
    		self.spend_time += 1
    		temps = self.spend_time
     
    		heure = temps / 3600
    		temps = temps - (heure * 3600)
     
    		minute = temps / 60
    		temps = temps - (minute * 60)
     
    		seconde = temps
     
    		self.text.SetLabel(str(heure).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(seconde).zfill(3))
     
    class Ihm (wx.App):
    	def OnInit (self):
    		root = Gui(u'PyChronos')
    		root.Show(True)
    		self.SetTopWindow(root)
    		return True
     
    if __name__ == '__main__':
    	app = Ihm()
    	app.MainLoop()
    Dans cet exemple j'ai remplacé à la ligne 54 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.text.SetLabel(str(heure).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(seconde).zfill(2))
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.text.SetLabel(str(heure).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(seconde).zfill(3))
    Afin que ce soit bien visible.

    J'ai essayé des self.Layout(), self.Fit()...
    Mais rien à faire, je n'arrive pas à redimentionner simplement la fenêtre à la dimension du texte !

    Voilà, si quelqu'un a une idée... (je suis sûr que c'est tout bête en plus )
    Merci d'avance !

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    Je te propose ceci, j'espère que cela va.

    wxWindow::GetBestSize
    wxSize GetBestSize() const

    This functions returns the best acceptable minimal size for the window. For example, for a static control, it will be the minimal size such that the control label is not truncated. For windows containing subwindows (typically wxPanel), the size returned by this function will be the same as the size the window would have had after calling Fit.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Merci Gamal le Celte !
    Fonctionne 5/5 !

    J'ai aussi apporter des modifs (au niveau du redimensionnement...).
    Toujours la ligne 51 à modifier si vous voulez vous servir de ce code.

    Voici le nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import wx
     
    class Gui (wx.Frame):
    	def __init__ (self, titre):
    		wx.Frame.__init__(self, None, wx.ID_ANY, title=titre, style=wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX)
     
    		self.panel = wx.Panel(self, wx.ID_ANY)
    		sizer = wx.BoxSizer(wx.VERTICAL)
     
    		# ----------------------------------------------------------------------------------------------------------- Widget
     
    		self.text = wx.StaticText(self.panel, wx.ID_ANY, u'00:00:00')
     
    		font = wx.Font(40, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
    		self.text.SetFont(font)
     
    		sizer.Add(self.text, flag=wx.ALIGN_CENTER|wx.ALL, border=20)
     
    		# ----------------------------------------------------------------------------------------------------------- Divers
     
    		# Sizer + Fit
    		self.panel.SetSizerAndFit(sizer)
    		self.Fit()
     
    		# Events
    		self.Bind(wx.EVT_TIMER, self.label)
     
    		# Chrono
    		self.spend_time = 0
     
    		self.timer = wx.Timer(self)
    		self.timer.Start(1000)
     
    	def label (self, event):
    		self.spend_time += 1
    		temps = self.spend_time
     
    		# ---------------------------------- Calculs
    		heure = temps / 3600
    		temps = temps - (heure * 3600)
     
    		minute = temps / 60
    		temps = temps - (minute * 60)
     
    		seconde = temps
    		# ----------------------------------
     
    		self.text.SetLabel(str(heure).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(seconde).zfill(3))
    		self.SetClientSize(self.panel.GetBestSize())
     
    class Ihm (wx.App):
    	def OnInit (self):
    		root = Gui(u'PyChronos')
    		root.Show(True)
    		self.SetTopWindow(root)
    		return True
     
    if __name__ == '__main__':
    	app = Ihm()
    	app.MainLoop()
    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dimension de la fenêtre Access
    Par phoon dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/10/2006, 09h05
  2. Dimension bouton depuis fenêtre non parente
    Par qi130 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 25/04/2006, 15h55
  3. prendre les dimensions d'une fenêtre
    Par ben_iap dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/12/2005, 13h12
  4. [Débutant] SWT Dimension de la fenêtre avec .setsize()
    Par steelidol dans le forum SWT/JFace
    Réponses: 6
    Dernier message: 20/04/2005, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo