Guest User

Untitled

a guest
Jan 23rd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. # coding=utf-8
  2. from PyQt4.QtCore import Qt
  3. import sys
  4. from datetime import *
  5. from calendar import Calendar
  6. from PyQt4.QtGui import (QApplication, QDialog, QGraphicsView, QGraphicsScene, QGraphicsRectItem, QVBoxLayout,
  7. QGraphicsSimpleTextItem, QBrush, QFont, QGraphicsItemGroup)
  8.  
  9. class GraficsView(QDialog):
  10.  
  11. def __init__(self, parent=None):
  12. monthnames = ("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "November",
  13. "Dezember")
  14. super(GraficsView, self).__init__(parent)
  15. self.viewbox = QGraphicsView()
  16. layout = QVBoxLayout()
  17. layout.addWidget(self.viewbox)
  18. self.setLayout(layout)
  19.  
  20. self.scene = QGraphicsScene(self.viewbox)
  21. self.scene.setSceneRect(0,0,701,501)
  22. self.calendarList = CalendarList(datetime(2018,2,1), self.scene)
  23.  
  24. self.viewbox.setScene(self.scene)
  25.  
  26.  
  27. class DateElement(QGraphicsItemGroup):
  28.  
  29. def __init__(self, scene, status=False, date=datetime.today(), coordinates=()):
  30. QGraphicsItemGroup.__init__(self, scene=scene)
  31. wochentage = ("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")
  32. self.status = status
  33. if self.status:
  34. self.setdate(date)
  35. self.setcoordinates(coordinates)
  36.  
  37. def setdate(self, date):
  38. wochentage = ("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")
  39. self.date = date
  40.  
  41. self.dayname = wochentage[self.date.weekday()]
  42. self.daynumber = self.date.day
  43.  
  44. def setcoordinates(self, coordinates):
  45. self.coordinates = coordinates
  46.  
  47. self.rectangle = QGraphicsRectItem(self.coordinates[0], self.coordinates[1], self.coordinates[2],
  48. self.coordinates[3])
  49. self.rectangle.setAcceptHoverEvents(True)
  50.  
  51. self.fontA = QFont("Verdana", 10, QFont.Bold)
  52. self.fontB = QFont("Verdana", 18, QFont.Bold)
  53.  
  54. self.lableday = QGraphicsSimpleTextItem()
  55. if self.dayname in ("Samstag", "Sonntag"):
  56. self.lableday.setBrush(QBrush(Qt.red))
  57. else:
  58. self.lableday.setBrush(QBrush(Qt.black))
  59. self.lableday.setFont(self.fontA)
  60. self.lableday.setText(self.dayname)
  61. self.lableday.setPos(self.coordinates[0]+3, self.coordinates[1])
  62.  
  63. self.lablenumber = QGraphicsSimpleTextItem()
  64. if self.dayname in ("Samstag", "Sonntag"):
  65. self.lablenumber.setBrush(QBrush(Qt.red))
  66. else:
  67. self.lablenumber.setBrush(QBrush(Qt.black))
  68. self.lablenumber.setFont(self.fontB)
  69. self.lablenumber.setText(str(self.daynumber)+".")
  70. self.lablenumber.setPos(self.coordinates[0]+3, self.coordinates[1]+12)
  71.  
  72. self.addToGroup(self.rectangle)
  73. self.addToGroup(self.lableday)
  74. self.addToGroup(self.lablenumber)
  75.  
  76. def hoverEnterEvent(self, event):
  77. self.rectangle.setBrush(QBrush(Qt.lightGray))
  78. self.update()
  79.  
  80. def hoverLeaveEvent(self, event):
  81. self.rectangle.setBrush(QBrush(Qt.white))
  82. self.update()
  83.  
  84. def mousePressEvent(self, event):
  85. self.rectangle.setAcceptHoverEvents(False)
  86. self.rectangle.setBrush(QBrush(Qt.blue))
  87. self.update()
  88.  
  89. def clearRectangle(self):
  90. self.rectangle.setAcceptHoverEvents(True)
  91. self.rectangle.setBrush(QBrush(Qt.white))
  92. self.update()
  93.  
  94. class CalendarList():
  95.  
  96. def __init__(self, date, scene):
  97. self.date = date
  98. self.scene = scene
  99. self.dateelements = []
  100.  
  101. self.createdates()
  102.  
  103. def createdates(self):
  104. weekcount = 0
  105. daycount = 0
  106. calendarobjekt = Calendar()
  107.  
  108. for dateobjekt in calendarobjekt.itermonthdates(self.date.year, self.date.month):
  109. if daycount < 7:
  110. if dateobjekt.month == self.date.month:
  111. self.dateelements.append(DateElement(self.scene, True, dateobjekt, (daycount*100, weekcount*100, 100, 100)))
  112. else:
  113. self.dateelements.append(DateElement(self.scene))
  114. daycount += 1
  115. else:
  116. daycount = 0
  117. weekcount += 1
  118. if dateobjekt.month == self.date.month:
  119. self.dateelements.append(DateElement(self.scene, True, dateobjekt, (daycount*100, weekcount*100, 100, 100)))
  120. else:
  121. self.dateelements.append(DateElement(self.scene))
  122. daycount += 1
  123.  
  124. app = QApplication(sys.argv)
  125. form = GraficsView()
  126. form.show()
  127. app.exec_()
Add Comment
Please, Sign In to add comment