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 :mrgreen: !
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:
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:
self.text.SetLabel(str(heure).zfill(2) + ':' + str(minute).zfill(2) + ':' + str(seconde).zfill(2))
Par:
Code:
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 :cry: !
Voilà, si quelqu'un a une idée... (je suis sûr que c'est tout bête en plus :oops: )
Merci d'avance :ccool: !