ich bin neu hier und in Python auch noch ziemlich am Anfang.
Habe ein Programm geschrieben, das quasi einen Kalender darstellen soll.
Dazu folgender Code:
Code: Alles auswählen
# -*- coding: utf-8 -*-
from tkinter import *
from Kalender import *
def clicked(arg):
    print("geklickt (Tag): " + str(arg))
root = Tk()
root.title("Kalender-Demonstration")
kalender = Kalender(clicked, root)
root.mainloop()Code: Alles auswählen
# -*- coding: utf-8 -*-
from tkinter import *
from KalenderLogik import *
from TagKachel import *
from HeaderKachel import *
from Arrow import *
class Kalender(Frame):
    def __init__(self, listener, master = None):
        Frame.__init__(self, master)
        self.pack()
        self.KalenderLogik = KalenderLogik()
        self.setToToday()
        self.listener = listener
        
    def rightArrowClicked(self, event):
        print("rechter Pfeil")
        self.KalenderLogik.increaseMonth()
        self.updateIt()
        
    def leftArrowClicked(self, event):
        print("linker Pfeil")
        self.KalenderLogik.decreaseMonth()
        self.updateIt()
        
    def createRightArrow(self):
        self.rightArrow = Arrow("right", self.rightArrowClicked, self)
        self.rightArrow.grid(row = 0, column = 6)
        
    def createLeftArrow(self):
        self.leftArrow = Arrow("left", self.leftArrowClicked, self)
        self.leftArrow.grid(row = 0, column = 0)
        
    def updateIt(self):
        print(self.KalenderLogik.getMonth())
        self.createKacheln()
        self.createHeaderKacheln()
        self.createMonthLabel()
        self.createRightArrow()
        self.createLeftArrow()
        
    def setBackgroundColor(self, day, color):
        self.TagKachelList[day-1].setBackgroundColor(color)
        
    def createMonthLabel(self):
        monthLabel = Canvas(self, width = 5*32, heigh = 30)
        monthLabel.create_rectangle(2, 2, (5*32)-2, 28, fill = "white")
        monthLabel.create_text((((5*32)-2)/2), 15, text = self.KalenderLogik.months[self.KalenderLogik.getMonth()-1] + " " + str(self.KalenderLogik.getYear()), font = 15)
        monthLabel.grid(row = 0, column = 1, columnspan = 5)
        
    def createHeaderKacheln(self):
        self.HeaderKachelList = []
        for i in range(0, 7):
            day = self.KalenderLogik.days[i]
            self.HeaderKachelList.append(HeaderKachel(day, self))
            self.HeaderKachelList[i].grid(row = 1, column = i)
    def createKacheln(self):
        spacer = 6
        self.TagKachelList = []
        for iDay in range(0, self.KalenderLogik.getNumberOfDaysInMonth(self.KalenderLogik.getMonth(), self.KalenderLogik.getYear())):
            self.TagKachelList.append(TagKachel(iDay+1, self))
            self.TagKachelList[iDay].grid(row = int((iDay+spacer) / 7) + 2, column = (iDay+spacer) % 7)
    def getDay(self):
        return self.KalenderLogik.getDay()
    def getMonth(self):
        return self.KalenderLogik.getMonth()
    def getYear(self):
        return self.KalenderLogik.getYear()
    def setDay(self, day):
        self.KalenderLogik.setDay(day)
        self.updateIt()
    def setMonth(self, month):
        self.KalenderLogik.setMonth(month)
        self.updateIt()
    def setYear(self, year):
        self.KalenderLogik.setYear(year)
        self.updateIt()
    def setToToday(self):
        self.KalenderLogik.setToToday()
        self.updateIt()
        
    def notify(self, message):
        self.listener(message)
        
    def setListener(self, listener):
        self.listener = listenerCode: Alles auswählen
# -*- coding: utf-8 -*-
from time import *
class KalenderLogik:
    def __init__(self, master = None):
        self.days = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
        self.months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
        self.setToToday()
        
    def increaseMonth(self):
        if self.month in range(1, 12):
            self.month = self.month + 1
        
    def decreaseMonth(self):
        if self.month in range(2, 13):
            self.month = self.month - 1
    def setToToday(self):
        lt = localtime()
        self.year, self.month, self.day = lt[0:3]
    def getYear(self):
        return self.year
    def getMonth(self):
        return self.month
    def getDay(self):
        return self.day
    def setYear(self, year):
        self.year = year
    def setMonth(self, month):
        self.month = month
    def setDay(self, day):
        self.day = day
        
    def getNumberOfDaysInMonth(self, month, year):
        if month <= 7:
            if month == 2:
                if self.schaltjahr(year) == True:
                    return 29
                else:
                    return 28
            else:
                if month % 2 == 0:
                    return 30
                else:
                    return 31
        else:
            if month % 2 == 0:
                return 31
            else:
                return 30
    def schaltjahr(self, year):
        if year % 4 == 0:
            if year % 100 != 0:
                return True
            else:
                if year % 400 == 0:
                    return True
                else:
                    return FalseCode: Alles auswählen
# -*- coding: utf-8 -*-
from tkinter import *
class Kachel(Frame):
    def __init__(self, data, backgroundColor, textColor, master = None):
        Frame.__init__(self, master)
        self.data = data
        self.master = master
        self.backgroundColor = backgroundColor
        self.textColor = textColor
        self.Data = Canvas(self, width = 30, heigh = 30)
        self.drawStuff()
        self.Data.pack()
        
    def drawStuff(self):
        self.Data.create_rectangle(2, 2, 28, 28, fill = self.backgroundColor)
        self.Data.create_text(15, 15, text = self.data, fill = self.textColor, font = 15)
    def setBackgroundColor(self, color):
        self.backgroundColor = color
        self.drawStuff()Code: Alles auswählen
# -*- coding: utf-8 -*-
from Kachel import *
class HeaderKachel(Kachel):
    def __init__(self, day, master = None):
        Kachel.__init__(self, day, "green", "red", master)Code: Alles auswählen
# -*- coding: utf-8 *-*
from Kachel import *
class TagKachel(Kachel):
    def __init__(self, day, master = None):
        Kachel.__init__(self, day, "blue", "red", master)
        self.Data.bind("<Button-1>", self.callback)
    
    def callback(self, event):
        self.master.notify(self.data)Code: Alles auswählen
# -*- coding: utf-8 -*-
from tkinter import *
class Arrow(Frame):
    def __init__(self, direction, listener, master = None):
        Frame.__init__(self, master)
        self.Data = Canvas(self, width = 30, heigh = 30)
        self.Data.create_rectangle(2, 2, 28, 28, fill = "white")
        self.drawArrow(direction)
        self.Data.bind("<Button-1>", listener)
        self.Data.pack()
        
    def drawArrow(self, direction):
        if direction == "right":
            self.Data.create_text(15, 15, text = "->")
        if direction == "left":
            self.Data.create_text(15, 15, text = "<-")Meine Frage: woran kann das liegen?
Ich benutze Python 3.3.1 unter Kubuntu.
Danke im Vorraus!
Gruß

 )
 )

 ).
).