From 58245bc8a4120e12869e96f36aa72a5cbe5c802b Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Fri, 13 May 2022 09:35:02 +0300 Subject: [PATCH] developing custom menu animation --- admin/data/settings.json | 3 +++ admin/data/settings.py | 29 +++++++++++++++++++++++++++++ admin/daunRat_admin.py | 5 ++++- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 admin/data/settings.json create mode 100644 admin/data/settings.py diff --git a/admin/data/settings.json b/admin/data/settings.json new file mode 100644 index 0000000..6e4f6b6 --- /dev/null +++ b/admin/data/settings.json @@ -0,0 +1,3 @@ +{ + "animation": "InOutQuart" +} \ No newline at end of file diff --git a/admin/data/settings.py b/admin/data/settings.py new file mode 100644 index 0000000..71d62ab --- /dev/null +++ b/admin/data/settings.py @@ -0,0 +1,29 @@ +import json + + +class Settings: + @staticmethod + def animation(): + from PyQt5.QtCore import QEasingCurve + with open("data/settings.json", "r") as file: + settings = json.load(file) + + animation = QEasingCurve.InOutQuart + timing = 300 + match settings["animation"]: + case "InOutQuart": + animation = QEasingCurve.InOutQuart + case "InOutBack": + animation = QEasingCurve.InOutBack + case "InOutBounce": + animation = QEasingCurve.InOutBounce + case "OutBack": + animation = QEasingCurve.OutBack + case "OutElastic": + animation = QEasingCurve.OutElastic + timing = 1000 + + return { + "animation": animation, + "timing": timing + } diff --git a/admin/daunRat_admin.py b/admin/daunRat_admin.py index d4f494a..7e29299 100644 --- a/admin/daunRat_admin.py +++ b/admin/daunRat_admin.py @@ -1,5 +1,6 @@ import sys from PyQt5 import QtWidgets, QtCore, QtGui +from data.settings import Settings sys.path.append('gui') try: @@ -17,13 +18,15 @@ MainWindow.show() def openMenu(): width = ui.leftMenu.geometry().width() Ui_MainWindow.animation = QtCore.QPropertyAnimation(ui.leftMenu, b"minimumWidth") - Ui_MainWindow.animation.setDuration(300) + Ui_MainWindow.animation.setDuration(Settings.animation()["timing"]) if width == 60: Ui_MainWindow.animation.setStartValue(60) Ui_MainWindow.animation.setEndValue(200) else: Ui_MainWindow.animation.setStartValue(200) Ui_MainWindow.animation.setEndValue(60) + Ui_MainWindow.animation.setEasingCurve(Settings.animation()["animation"]) + Ui_MainWindow.animation.start()