2016-04-03 4 views
0

Ich schreibe einen wöchentlichen Zeitplan für einen Kalender in PySide (QcalendarWidget). Zum Beispiel möchte ich in der ersten Woche Aufgaben A, B, C, D für jeden Tag dieser Woche haben. Ein Wörterbuch für die erste Woche (erste 7 Tage) eines jeden Monats ist so etwas wie diese:Qdate, ersten Tag des Monats

FirstWeekTasks={1:["A","B"],3:["C","D"],5:["A","D"]} 

wo 1, 3 und 5 sind der erste, dritte und fünfte Tag des laufenden Monats.

Wie kann ich das tun? Dank

+0

Möchten Sie die Daten für den 1., 3. und 5. Tag des Monats? –

+0

Erwartete Ausgabe? – Pythonista

+0

@BrendanAbel genau, in einem anderen Wort, ich möchte für den aktuellen Monat, stellen Sie die Aufgaben. Jede Woche hat verschiedene Aufgabensätze. –

Antwort

0

Mit time Modul:

>>> import time 
>>> time.localtime().tm_mday 
4 

Mit datetime Modul:

>>> import datetime 
>>> datetime.datetime.now().day 
4 
0

Sie können dies tun, mit QDate.addDays().

Beginnen Sie mit dem ausgewählten Datum aus dem Kalender-Widget:

>>> seldate = calwidget.selectedDate() 
>>> seldate 
PySide.QtCore.QDate(2016, 4, 19) 

dann die gewünschten Tage des gewählten Kalendermonat zu erhalten, subtrahieren nur die day():

>>> seldate.day()  
19 
>>> seldate.addDays(1 - seldate.day()) # first 
PySide.QtCore.QDate(2016, 4, 1) 
>>> seldate.addDays(3 - seldate.day()) # third 
PySide.QtCore.QDate(2016, 4, 3) 
>>> seldate.addDays(5 - seldate.day()) # fifth 
PySide.QtCore.QDate(2016, 4, 5) 

So addDays() a nehmen positive Zahl, um in der Zeit vorwärts zu gehen, und eine negative Zahl, um rückwärts zu gehen.