So, frohe Weihnachten wünsche ich allen Python-Helfern hier im Forum!
Nun mal zu meinem Problem: Ich programmiere mir gerade einen Software, die mir hilft meine Termine in Hinsicht auf die Schule zu organisieren, also Hausaufgaben, Klausuren und Präsentation.
Hierfür habe ich das wx-Modul wx.lib.calendar.Calendar benutzt. Wenn ein Termin an einem Tag angelegt wird, soll dieser Tag im Kalendar blau "markiert" werden. Nun bietet das Modul keine Methode á la SetDayColor(), sondern nur, dass ich sagen kann, dass generell der 24.12. markiert sein soll. Ich habe es soweit hinbekommen, dass ich einen Termin am 07.01.2008 anlege, leider ist es so, dass dann auch der 07.01.2009 usw markiert wird.
Das ist so aber nicht wie es sein sollte.
Hätte jemand eine Idee, wie ich mein Ziel erreichen kann? Gibt es die Möglichkeit so eine Funktion selbst zu schreiben?
Bitte um schnellstmögliche Hilfe. Danke schon einmal im Voraus!
Markieren nur eines Tages bei wx.lib.calendar.Calendar
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
Das hier hilft evtl. weiter: http://www.daniweb.com/code/printsnippet741.html.
Hilfreich könnte auch folgendes sein:MfG
HWK
Hilfreich könnte auch folgendes sein:
Code: Alles auswählen
dir(wx.lib.calendar.Calendar)
HWK
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Blauer Fasan!Blauer Fasan hat geschrieben:Gibt es die Möglichkeit so eine Funktion selbst zu schreiben?
Am Besten, du legst dir in deinem Prgrammordner eine Kopie der Datei *C:\Python25\Lib\site-packages\wx-2.8-msw-unicode\wx\lib\calendar.py* an. Nenne diese z.B. *extcalendar.py* und ändere den Code des Kalenders so ab, dass dieser deine gewünschte Funktion erfüllt.
Das ist nicht einfach und wird viele Stunden -- wenn nicht sogar Tage -- dauern, aber man lernt ziemlich viel dabei. Besonders darüber, wie man mit dem DeviceContext zeichnet und damit eigene Widgets erstellen kann.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Also erstmal danke für die Antworten!
Zu HWK:
Diese Quelle hatte ich auch schon gefunden, leider wird dort auch nur mit der Funktion gearbeitet mit der man die Feiertage markiert, also jeden 24.12 in jedem Jahr.
Was meinst du mit "dir(wx.lib.calendar.Calendar)" ?
Zu GP:
Ok, das werde ich wohl versuchen müssen, hoffentlich dauert es nicht allzu lange, denn so viel Zeit werde ich nicht haben.
Aber vielen Dank für die Antworten, wenn jemand schon mal ein ähnliches Problem hatte, kann er ja ggf. sagen, wie man den Code von Calendar.py abändern muss.
Gruß euer Blauer Fasan
Zu HWK:
Diese Quelle hatte ich auch schon gefunden, leider wird dort auch nur mit der Funktion gearbeitet mit der man die Feiertage markiert, also jeden 24.12 in jedem Jahr.
Was meinst du mit "dir(wx.lib.calendar.Calendar)" ?
Zu GP:
Ok, das werde ich wohl versuchen müssen, hoffentlich dauert es nicht allzu lange, denn so viel Zeit werde ich nicht haben.
Aber vielen Dank für die Antworten, wenn jemand schon mal ein ähnliches Problem hatte, kann er ja ggf. sagen, wie man den Code von Calendar.py abändern muss.
Gruß euer Blauer Fasan
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
HWK meinte Du solltest Dir mal die Attribute von `wx.lib.calendar.Calendar` anschauen. Und vielleicht die Doku zur `dir()`-Funktion.
Ja, genau!BlackJack hat geschrieben:HWK meinte Du solltest Dir mal die Attribute von `wx.lib.calendar.Calendar` anschauen. Und vielleicht die Doku zur `dir()`-Funktion.
Jeder Monat wird aber getrennt dargestellt. Entsprechend ginge dies natürlich auch für jedes Jahr. Du bestimmst also in ResetDisplay() aktuelles Jahr und Monat und suchst aus Deiner Terminliste die entsprechenden Termine heraus. Diese markierst Du dann.Blauer Fasan hat geschrieben:Diese Quelle hatte ich auch schon gefunden, leider wird dort auch nur mit der Funktion gearbeitet mit der man die Feiertage markiert, also jeden 24.12 in jedem Jahr.
MfG
HWK
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Also das mit dem aktuellen Jahr verstehe ich ja, aber bei den Terminen, welche ja in einem Dictionary gespeichert sind gibt es ja nur die Monate. Soll ich also ein Dictionary anlegen, welche als key das Jahr und als value den Monat beinhaltet?
Oder wie sollte das mit dem aktuellen Jahr gelöst werden. Entschuldige, wenn ich Dich oder die genannte Quelle falsch verstehe.
Blauer Fasan
Oder wie sollte das mit dem aktuellen Jahr gelöst werden. Entschuldige, wenn ich Dich oder die genannte Quelle falsch verstehe.
Blauer Fasan
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Ich weiß nicht, ob Du mich falsch verstehst oder ich Dich, aber könntest Du mir deine Lösung bitte etwas näher erläutern?
Ich habe ein Dictionary mit Daten als key (typ:: datetime.time) und als value eine "Bedeutung" (inwiefern Bedeutung, markiert oder nicht markiert?). Aber inwiefern soll mir das weiterhelfen?
Es kann sein, dass ich DIch falsch verstehe, wenn dies der Fall sein sollte, könntest du vielleicht mit etwas Code nachhelfen, aber nur wenn Du Zeit und Lust dazu hast.
Gruß BF
Ich habe ein Dictionary mit Daten als key (typ:: datetime.time) und als value eine "Bedeutung" (inwiefern Bedeutung, markiert oder nicht markiert?). Aber inwiefern soll mir das weiterhelfen?
Die Frage ist doch, wie ich diese markieren soll, ich kann ja nicht einfach sagen markiere das und das Datum, sondern ich kann dieses Datum nur als "holiday" kennzeichnen, somit würde es dann als solches gekennzeichnet werden.Jeder Monat wird aber getrennt dargestellt. Entsprechend ginge dies natürlich auch für jedes Jahr. Du bestimmst also in ResetDisplay() aktuelles Jahr und Monat und suchst aus Deiner Terminliste die entsprechenden Termine heraus. Diese markierst Du dann.
Es kann sein, dass ich DIch falsch verstehe, wenn dies der Fall sein sollte, könntest du vielleicht mit etwas Code nachhelfen, aber nur wenn Du Zeit und Lust dazu hast.
Gruß BF
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
Nur einmal ganz schnell zusammengehackt. Für's Verständnis reicht es aber hoffentlich. Ich habe dazu das Beispiel im Link minimal angepasst. Schau Dir hierzu die Zeilen mit ## an: http://paste.pocoo.org/show/17954/
MfG
HWK
MfG
HWK
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Ok, jetzt habe ich es hinbekommen, vielen Dank HWK!
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!