#! /usr/bin/python3 # todo adjust font with panel size import wx import time class DClockPane(wx.Panel): def __init__(self,P): super(DClockPane, self).__init__(P) self.timeString="" self.face =face= wx.StaticText(self,-1,self.timeString) Z=wx.BoxSizer() Z.Add(face,1,wx.EXPAND|wx.ALL) self.SetSizer(Z) self.Bind(wx.EVT_SIZE, self.resize) self.timer = wx.Timer(self, -1) self.myTimerId=self.timer.GetId() self.Bind(wx.EVT_TIMER, self.OnTimer) self.timer.Start(1000) self.SetSize(20,150) def resize(self,e): r=7.5 W,H=self.Size if W!=r*H: self.SetSize( wx.Size(r*H, H)) self.Refresh() F:wx.Font=self.face.GetFont() w,h=F.GetPixelSize() F.SetPixelSize((0,.8*H)) self.face.SetFont(F) def OnTimer(self,e): named_tuple = time.localtime() # get struct_time self.timeString=t = time.strftime("%H:%M:%S", named_tuple) # print(t) self.face.SetLabel(t) class MyFrame(wx.Frame): def __init__(self, P = None): super(MyFrame, self).__init__(P) pane = DClockPane(self) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(pane, 1, wx.EXPAND, wx.ALL) self.SetBackgroundColour(wx.CYAN) self.SetSizer(sizer) self.pane = pane self.sizer = sizer # self.Bind(wx.EVT_SIZE, self.resize) # self.Bind(wx.EVT_CLOSE, self.Exit) def resize(self,e): r=3 W,H=self.Size if W != r*H: self.SetSize( wx.Size(r*H, H)) self.Refresh() def Exit(self,e): print("Bye now") self.Show(0) print("It's dark now") self.Destroy() print("Gonzo") exit(0) class App(wx.App): def __init__(self): super(App, self).__init__() frame = MyFrame(None) frame.Show(True) if __name__ == '__main__': app = App() app.MainLoop()