Forum
>>
Programmazione Python
>>
GUI
>>
[WxPython] wx.CalendarCtrl e wx.TextCtrl
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Jena |
2019-09-16 11:02:19 - [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Riposto perché il precedente "è sparito" ovvero... a me non risulta più visibile
Buongiorno, sono nuovo e sto iniziando ad usare Python che devo dire è molto potente e versatile. Ho un problema che spero sia facile da risolvere. Voglio creare un form dove uno possa indicare una data inizio ed una data fine e che tali date finiscano in 2 textctrl. Il problema è che non riesco a valorizzare la casella di testo con la data ottenuta dal calendario import wx import wx.adv import datetime class MyCalendar(wx.Frame): def __init__(self, *args, **kargs): wx.Frame.__init__(self, *args, **kargs) grid_sizer = wx.FlexGridSizer(3, 2, 10, 5) panel = wx.Panel(self) self.cal1 = wx.adv.CalendarCtrl(panel, 0, wx.DateTime.Now()) self.cal2 = wx.adv.CalendarCtrl(panel, 0, wx.DateTime.Now()) self.cal1.Bind(wx.adv.EVT_CALENDAR, self.OnDate1) self.cal2.Bind(wx.adv.EVT_CALENDAR, self.OnDate2) self.lbl1 = wx.StaticText(panel, label="Data Inizio") self.lbl2 = wx.StaticText(panel, label="Data Fine") self.button = wx.Button(panel, label="uno", name="one") self.da = wx.TextCtrl(panel) self.a = wx.TextCtrl(panel) grid_sizer.Add(self.lbl1, wx.EXPAND) grid_sizer.Add(self.lbl2, wx.EXPAND) grid_sizer.Add(self.cal1, wx.EXPAND) grid_sizer.Add(self.cal2, wx.EXPAND) grid_sizer.Add(self.da, wx.LEFT) grid_sizer.Add(self.a, wx.RIGHT) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(grid_sizer, proportion=1, flag=wx.ALL|wx.EXPAND, border=10) panel.SetSizer(sizer) def OnDate1(self, e): data=datetime.datetime.strftime(self.cal1.GetDate(), '%d-%m-%Y %H:%M') self.da.SetValue(data) def OnDate2(self, event): print(self.cal2.GetDate()) wx.Window.Close(self) if __name__ == '__main__': app = wx.App() frame = MyCalendar(None) frame.Show() app.MainLoop() Perdonate se il codice non è proprio come dovrebbe essere, ma sono letteralmente alle prime righe di codice e già non so come aprire il frame "alla dimensione corretta" Aggiungo che mi piacerebbe avere soltanto un controllo "OnDate" che sappia da se riconoscere quale calendar lo richiama e quindi valorizzi il giusto text.... ma vabbè... un passo alla volta. Grazie a chi vorrà rispondere. Ciao |
|
Scritto da Orsogrizzly |
2019-09-16 12:14:43 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Attualmente sono al cellulare quindi non posso dilungarmi ed è parecchio che non uso le WX
Io all’interno della funzione metterò in print per verificare se l’evento del calendar mi restituisce i dati che desideri, poi sei sicuro di utilizzare il comando (setvalue) giusto per il controller (widget texture ctrl) che usi? E forse non è meglio cambiare il Widget?? Se non hai bisogno di scrivere testo dà tastiera!!??? |
|
Scritto da Jena |
2019-09-16 14:58:46 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Il print l'ho messo (e poi tolto) e restituisce correttamente la data.
Sto usando Wx perché mi pare sia quello più "usato". O almeno così mi par di aver capito. :/ |
|
Scritto da Orsogrizzly |
2019-09-16 15:58:23 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Non intendevo le WX ma il widget WX.TextCTRL, se non hai bisogno di scrivere direttamente sul contollo qualcosa a mano,
oltre l'ora che ricavi dal WX.Calendar, io userei una WX.Label per fargli scrivere l'ora. Comunque per cercare di aiutarti prova a cambiare la funzione OneDate1 cosi: def OnDate1(self, event): #data = datetime.datetime(self.cal1.GetDate()) #data = datetime.date.strftime(self.cal1.GetDate(), '%d-%m-%Y %H:%M') a = self.cal1.GetDate() print(a) print (type(a)) print((a.year),(a.month),(a.day),(a.hour),(a.minute),(a.second)) self.a.SetValue(str(a)) e in fine per visualizzare il tuo frame più grande: if __name__ == '__main__':
app = wx.App()
frame = MyCalendar(None)
frame.SetSize(wx.Size(500,500))
frame.Show()
app.MainLoop() ma credo che dovresti esercitarti e leggere più a fondo come utilizzare i WX.box orrizontali,verticali e le loro proprieta di espansione e posizionamento tra loro e i Widget contenuti.
--- Ultima modifica di Orsogrizzly in data 2019-09-16 20:58:14 --- |
|
Scritto da Jena |
2019-09-17 09:25:30 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
.... ci sto provando. E' che tra lavoro e 3 bambini.... il tempo è risicatissimo e mi ritrovo ad andar a tentoni.
Grazie per la disponibilità. In giornata provo ed aggiorno il thread. Grazie 1000 |
|
Scritto da Orsogrizzly |
2019-09-17 09:53:51 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Benvenuto nel club
|
|
Scritto da Jena |
2019-09-17 10:23:02 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
|
|
Scritto da Orsogrizzly |
2019-09-17 10:52:20 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Jena
Vado out Ho cercato sul tuo profilo la mail per poterti contattare in privato ma non c’è. Se è ripeto se ti va sul mio profilo trovi la mia mail, inviami una mail con oggetto WX E PYTHON cosicché ti possa contestare, ripeto solo se ti va a genio. --- Ultima modifica di Orsogrizzly in data 2019-09-17 10:53:58 --- |
|
Scritto da Jena |
2019-09-17 11:48:02 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
Strano... la mail c'è......
comunque jena at iname dot com |
|
Scritto da Jena |
2019-09-17 13:24:55 - Re: [WxPython] wx.CalendarCtrl e wx.TextCtrl
|
OT
... Orso... ti ho mandato una mail ma è stata cassata: A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: orsoweb@alice.it: SMTP error from remote server for MAIL FROM command, host: smtp.aliceposta.it (82.57.200.133) reason: 550 mail not accepted from blacklisted IP address /OT --- Ultima modifica di Jena in data 2019-09-17 13:25:42 --- |
Pagina: 1
Esegui il login per scrivere una risposta.