Intanto con il metacommento magico
# -*- coding: utf-8 -*-
risolviamo parecchie cose, cioè possiamo usare tutto l'unicode e scrivere cose come queste:
#!/usr/bin/python
# -*- coding: utf-8 -*-
it = "Buongiorno"
ru = "доброе утро"
ar = "صباح الخير"
eb = "הבוקר טוב"
ko = "좋은 아침"
zh = "早安"
gr = "καλημέρα"
hi = "गुड मॉर्निंग"
print "il nostro {0} diventa:\n{1} in russo,".format(it, ru)
print "{0} in arabo,\n{1} in ebraico,\n {2} in coreano,".format(ar, eb, ko)
print "{0} in cinese,\n{1} in greco,\n {2} in hindi.\n".format(zh, gr, hi)
Va quasi bene, in hindi se lo reindirizzate su file con
python unicode.py > ut.txt
lo vedete così:il nostro Buongiorno diventa:
доброе утро in russo,
صباح الخير in arabo,
הבוקר טוב in ebraico,
좋은 아침 in coreano,
早安 in cinese,
καλημέρα in greco,
गुड मॉर्निंग in hindi.
Sì, per l'arabo e l'ebraico c'è il problema della direzione.Tutto questo sempre che Google Translate funzioni, se del caso prendetevela con lui.
Tutto questo per dire che il testo che seguiamo per questo corso, questo qui è in parte superato.
Ma si possono fare cose come quest'orologio universale, valido per tutti i posti dove abbiamo amici che non vogliamo disturbare nelle ore notturne (ora.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
import time
class WorldTime(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(270, 280))
self.panel = wx.Panel(self, -1)
self.panel.SetBackgroundColour('#000000')
font = wx.Font(12, wx.FONTFAMILY_DEFAULT,
wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, 'Georgia')
verde = '#23f002'
self.dt = wx.DateTime()
self.tokyo = wx.StaticText(self.panel, -1,
self.dt.FormatTime() , (20, 20))
self.tokyo.SetForegroundColour(verde)
self.tokyo.SetFont(font)
self.moscow = wx.StaticText(self.panel, -1,
self.dt.FormatTime() , (20, 70))
self.moscow.SetForegroundColour(verde)
self.moscow.SetFont(font)
self.rome = wx.StaticText(self.panel, -1,
self.dt.FormatTime() , (20, 120))
self.rome.SetForegroundColour(verde)
self.rome.SetFont(font)
self.london = wx.StaticText(self.panel, -1,
self.dt.FormatTime() , (20, 170))
self.london.SetForegroundColour(verde)
self.london.SetFont(font)
self.newyork = wx.StaticText(self.panel, -1,
self.dt.FormatTime() , (20, 220))
self.newyork.SetForegroundColour(verde)
self.newyork.SetFont(font)
self.OnTimer(None)
self.timer = wx.Timer(self)
self.timer.Start(1000)
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.Centre()
self.Show(True)
def OnTimer(self, evt):
now = self.dt.Now()
self.tokyo.SetLabel('Tokyo: ' + str(now.Format(('%a %T'),
wx.DateTime.GMT9)))
self.moscow.SetLabel('Moscow: ' + str(now.Format(('%a %T'),
wx.DateTime.MSK)))
self.rome.SetLabel('Rome: ' + str(now.Format(('%a %T'),
wx.DateTime.CET)))
self.london.SetLabel('London: ' + str(now.Format(('%a %T'),
wx.DateTime.WET)))
self.newyork.SetLabel('New York: ' + str(now.Format(('%a %T'),
wx.DateTime.EDT)))
app = wx.App()
WorldTime(None, -1, 'World Time')
app.MainLoop()
Però attenzione: lo script (ho modificato quello proposto nel sito di ZetCode) è fatto nell'ipotesi che non sia attiva l'ora legale. È vero che è possibile sapere se questa è attiva o no:
come vedete adesso non è attiva, se lo fosse
tm_isdst
varrebbe 1. Quindi tutto OK? NO! per niente:DST is Daylight Saving Time, an adjustment of the timezone by (usually) one hour during part of the year. DST rules are magic (determined by local law) and can change from year to year. The C library has a table containing the local rules (often it is read from a system file for flexibility) and is the only source of True Wisdom in this respect.
Il nostro orologio universale avrà bisogno di aggiustre l'ora di tanto in tanto, proprio come quelli normali.
OK, per oggi basta così, nell'attesa che ritorni Bit3Lux vi ricordo che l'indice del corso lo trovate qui.
Nessun commento:
Posta un commento