Seite 1 von 1

Kalender und einige Fragen

Verfasst: Donnerstag 21. Februar 2008, 21:12
von Mawilo
Hallo,

ich versuche gerade, in eine Oberfläche einen Kalender als Popup zu implementieren. Ich verwende dazu das Beispiel aus der Doku. Nur leider wird das Feld, in dem das ausgewählte Datum angezeigt wird, immer viel zu groß dargestellt.
Hier ein Beispielcode:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
import wx.lib.popupctl as  pop
import wx.calendar as  cal

class MainFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Test', size=(300, 400))
        panel = wx.Panel(self)
        txt1 = wx.StaticText(panel, -1, label='Periode von:')
        txt2 = wx.StaticText(panel, -1, label='bis:')
        cld1 = DateControl(panel, -1, size=(120, 28))
        cld2 = DateControl(panel, -1, size=(120, 28))
        sizer = wx.GridBagSizer(hgap=10, vgap=10)
        sizer.Add(txt1, pos=(0, 0))
        sizer.Add(cld1, pos=(0, 1))
        sizer.Add(txt2, pos=(1, 0))
        sizer.Add(cld2, pos=(1, 1))
        panel.SetSizer(sizer)
        
class DateControl(pop.PopupControl):
    def __init__(self,*_args,**_kwargs):
        apply(pop.PopupControl.__init__,(self,) + _args,_kwargs)
        self.win = wx.Window(self,-1, pos = (0,0), style = 0)
        self.cal = cal.CalendarCtrl(self.win, -1, pos = (0,0))
        bz = self.cal.GetBestSize()
        self.win.SetSize(bz)
        self.SetPopupContent(self.win)
        self.cal.Bind(cal.EVT_CALENDAR_DAY, self.OnCalSelected)

    def OnCalSelected(self,evt):
        self.PopDown()
        date = self.cal.GetDate()
        self.SetValue('%02d.%02d.%04d' % (date.GetDay(),
                                          date.GetMonth()+1,
                                          date.GetYear()))
        evt.Skip()

    def FormatContent(self):
        txtValue = self.GetValue()
        dmy = txtValue.split('.')
        didSet = False
        if len(dmy) == 3:
            date = self.cal.GetDate()
            d = int(dmy[0])
            m = int(dmy[1]) - 1
            y = int(dmy[2])
            if d > 0 and d < 31:
                if m >= 0 and m < 12:
                    if y > 1000:
                        self.cal.SetDate(wx.DateTimeFromDMY(d,m,y))
                        didSet = True
        if not didSet:
            self.cal.SetDate(wx.DateTime_Today())
            
def main():
    app = wx.PySimpleApp()
    frame = MainFrame()
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()
Die Class "DateControl" ist aus der Demo übernommen. Die Anzeigefelder lassen sich in ihrer Größe nicht ändern. :( Wo liegt da der Fehler?
Zum Kalender habe ich noch mehr Fragen:
  • - Kann ich den Kalender auf deutsche Monatsangaben "umstellen"?
    - Wie kann ich die Kalenderwoche an einem Montag beginnen lassen?
Ich bin wie immer für jeden Hinweis dankbar.

Grüße
Mawilo

PS: Wie kann ich mit wx die Monitorauflösung (wegen der Darstellungsgröße der Fenster) ermitteln?

Verfasst: Mittwoch 27. Februar 2008, 22:34
von Mawilo
Ich bin mittlerweile etwas weiter gekommen - ich verwende jetzt wx.DatePickerCtrl statt PopupControl. Nur leider kämpfe ich mit den unterschiedlichen Betriebssystemen. Und Windows (w2k) ist an dieser Stelle für meinen Geschmack einfach besser als Linux.

So sieht der Kalender jeweils aus:

Linux (Kde):
Bild
Windows:
Bild

Und unter Windows schließt sich der Kalender wieder, wenn ein Datum ausgewählt wurde - unter Linux bleibt er offen.
Unter Windows beginnt die Woche mit Montag - unter Linux mit Sonntag.

Ich lasse mich aber gerne eines besseren belehren :lol:

Mawilo

Re: Kalender und einige Fragen

Verfasst: Freitag 23. Juli 2010, 08:13
von wolly
Hi,
sorry, dass ich den Thread wieder ausbuddel.
Wie bekommt man denn jetzt die deutschsprachigen Ausgaben hin?
Habe leider auch bei weiterem Suchen nichts finden können..
Vielen Dank im Voraus?

lG,
Wolly

Re: Kalender und einige Fragen

Verfasst: Freitag 23. Juli 2010, 13:12
von Dav1d
wx.Locale

http://wiki.wxpython.org/Internationalization

Aber dein Problem, hat doch nichts mit den Kalendern zu tun, falls doch, einer aus der wxpython-users mailing list schreibt an ner neuen/besseren DatePickerCtrl

Re: Kalender und einige Fragen

Verfasst: Montag 26. Juli 2010, 20:16
von Francesco
Dav1d hat geschrieben:...falls doch, einer aus der wxpython-users mailing list schreibt an ner neuen/besseren DatePickerCtrl
Wer (ich verfolge die wxPy mailing list nur mehr sporadisch)? Ich könnte oder würde wieder einmal auf Herrn Gavana tippen. :wink: Was er schon für die wxPython (und deren Community) (neben Herrn Dunn natürlich) alles geleistet hat, ist schon einzigartig. Hut ab. 8)

Re: Kalender und einige Fragen

Verfasst: Montag 26. Juli 2010, 20:48
von wolly
Hi nochmal,
ob das Problem mit dem eigentliche calendar zu tun, kann ich als Anfänger noch nicht mal beantworten.
Interessant finde ich nur, dass dieses Phänomen beim DatePickerCtrl nicht auftritt. Da ist alles schön "eingedeutscht".

LG, Wolly

Re: Kalender und einige Fragen

Verfasst: Dienstag 27. Juli 2010, 12:19
von Dav1d
@wolly, jedes widget sollte sich der Lokale anpassen

@francesco, ka wers war, aber weder Andrea Gavana noch Robin Dunn (btw. hat Robin Dunn wxPython "gegründet" und er ist eig. jeden Tag (gegen Abend (UTC+1) online im IRC)