
主脚本:
# encoding: utf-8
import os
import sys
from pyside6.qtcore import qpropertyanimation, qeasingcurve
from 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:
@staticmethod
def btn_animation(obj):
ui.animation = qpropertyanimation(obj, b"minimumwidth")
ui.animation.setduration(300)
start_size = obj.width()
if obj.width() == 50:
end_size = 150
else:
end_size = 50
ui.animation.setstartvalue(start_size)
ui.animation.setendvalue(end_size)
ui.animation.seteasingcurve(qeasingcurve.linear)
ui.animation.start()
@staticmethod
def job_todo_2():
pass
# 退出系统前的保存、清理、释放等操作
@staticmethod
def 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())到此这篇关于pyside(pyqt)使用qpropertyanimation制作动态界面的文章就介绍到这了,更多相关pyqt 使用qpropertyanimation动态界面内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论