Kalender und einige Fragen

Plattformunabhängige GUIs mit wxWidgets.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Kalender und einige Fragen

Beitragvon Mawilo » Donnerstag 21. Februar 2008, 21:12

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?
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Mittwoch 27. Februar 2008, 22:34

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
wolly
User
Beiträge: 5
Registriert: Freitag 24. Juli 2009, 11:49
Wohnort: Haan
Kontaktdaten:

Re: Kalender und einige Fragen

Beitragvon wolly » Freitag 23. Juli 2010, 08:13

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Re: Kalender und einige Fragen

Beitragvon Dav1d » Freitag 23. Juli 2010, 13:12

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
the more they change the more they stay the same
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Re: Kalender und einige Fragen

Beitragvon Francesco » Montag 26. Juli 2010, 20:16

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)
wolly
User
Beiträge: 5
Registriert: Freitag 24. Juli 2009, 11:49
Wohnort: Haan
Kontaktdaten:

Re: Kalender und einige Fragen

Beitragvon wolly » Montag 26. Juli 2010, 20:48

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Re: Kalender und einige Fragen

Beitragvon Dav1d » Dienstag 27. Juli 2010, 12:19

@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)
the more they change the more they stay the same

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder