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 = listener
Code: 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 False
Code: 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ß