1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
from main import *
from PyQt5.QtCore import QPropertyAnimation
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QPixmap, QPainter
from PyQt5.QtCore import QTimeLine
from PyQt5.QtWidgets import QWidget, QStackedWidget, QPushButton
from functools import partial
class UI_Handeler(MainWindow):
def toggleNavigationBar(self, maxWidth, enable):
if enable:
width = self.leftMenuSubContainer.width()
maxExtend = maxWidth
standard = 80
if width == 80:
widthExtended = maxExtend
else:
widthExtended = standard
self.animation = QPropertyAnimation(self.leftMenuSubContainer, b"minimumWidth")
self.animation.setDuration(400)
self.animation.setStartValue(width)
self.animation.setEndValue(widthExtended)
self.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart)
self.animation.start()
# animate switching pages for QstackedWidget with the animation being a fade in and out
def animateSwitch(self, index):
self.fader_widget = FaderWidget(self.stackedWidget.currentWidget(), self.stackedWidget.widget(index))
self.stackedWidget.setCurrentIndex(index)
# add window resizing to the UI
def toggleMaximized(self):
if self.isMaximized():
self.showNormal()
else:
self.showMaximized()
# move the window by dragging the header
def moveWindow(self, event):
if event.buttons() == QtCore.Qt.LeftButton:
self.move(self.pos() + event.globalPos() - self.clickPosition)
self.clickPosition = event.globalPos()
event.accept()
# get the position of the mouse when clicked
def mousePressEvent(self, event):
self.clickPosition = event.globalPos()
event.accept()
# get the position of the mouse when released
def mouseReleaseEvent(self, event):
self.clickPosition = None
event.accept()
class FaderWidget(QWidget):
def __init__(self, old_widget, new_widget):
QWidget.__init__(self, new_widget)
self.old_pixmap = QPixmap(new_widget.size())
old_widget.render(self.old_pixmap)
self.pixmap_opacity = 1.0
self.timeline = QTimeLine()
self.timeline.valueChanged.connect(self.animate)
self.timeline.finished.connect(self.close)
self.timeline.setDuration(250)
self.timeline.start()
self.resize(new_widget.size())
self.show()
def paintEvent(self, event):
painter = QPainter()
painter.begin(self)
painter.setOpacity(self.pixmap_opacity)
painter.drawPixmap(0, 0, self.old_pixmap)
painter.end()
def animate(self, value):
self.pixmap_opacity = 1.0 - value
self.repaint()
|