主脚本:
# encoding: utf-8
import os
import sysfrom PySide6.QtCore import QPropertyAnimation, QEasingCurvefrom UIS import *# 主画面类
class MainWindow(QMainWindow, animationButton_ui.Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)self.run() # 初始化self.signal_slot() # 信号和槽# 初始化def run(self):self.move(0, 0)self.show() # 显示画面# 画面层面的信号和槽def signal_slot(self):self.pushButton_2.clicked.connect(lambda: Jobs.btn_animation(self.frame_1))pass# 按钮站的槽函数class Jobs:@staticmethoddef btn_animation(obj):ui.animation = QPropertyAnimation(obj, b"minimumWidth")ui.animation.setDuration(300)start_size = obj.width()if obj.width() == 50:end_size = 150else:end_size = 50ui.animation.setStartValue(start_size)ui.animation.setEndValue(end_size)ui.animation.setEasingCurve(QEasingCurve.Linear)ui.animation.start()@staticmethoddef Job_todo_2():pass# 退出系统前的保存、清理、释放等操作@staticmethoddef before_quit():if ui.windows:for w in ui.windows:w.close()# 项目的定义
class UI(QObject): # 将项目定义为QObject,用来管理项目级别的信号和变量def __init__(self):super().__init__()self.run() # 初始化# 项目的初始化def run(self):# 项目层面的信号和槽def signal_slot():pass# 退出系统之前的操作app.aboutToQuit.connect(Jobs.before_quit)signal_slot()# #############################主程序##################################
if __name__ == '__main__':app = QApplication(sys.argv)# 项目的实例化ui = UI()ui.windows = [] # 所有用到的窗口# 初始化画面mainWindow = MainWindow() # 主画面实例化ui.windows.append(mainWindow)sys.exit(app.exec())