Python-GUI编程PyQT5案例:注册界面扇形菜单动画及相关事件处理
生活随笔
收集整理的這篇文章主要介紹了
Python-GUI编程PyQT5案例:注册界面扇形菜单动画及相关事件处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最終效果
步驟
py源碼
Register_Panel.py
from PyQt5.Qt import * from resource.register_ui import Ui_Formclass Window(QWidget,Ui_Form):def __init__(self):super().__init__()self.setAttribute(Qt.WA_StyledBackground,True)self.setupUi(self)self.animation_targets = [self.about_menu_btn,self.reset_menu_btn,self.exit_menu_btn]self.animation_targets_pos = [target.pos() for target in self.animation_targets]def show_hide_menu(self, checked):print("顯示和隱藏", checked)animation_group = QSequentialAnimationGroup(self)for idx,target in enumerate(self.animation_targets):animation = QPropertyAnimation()animation.setTargetObject(target)animation.setPropertyName(b"pos")# if not checked:animation.setStartValue(self.main_menu_btn.pos())animation.setEndValue(self.animation_targets_pos[idx])# else:# animation.setEndValue(self.main_menu_btn.pos())# animation.setStartValue(self.animation_targets_pos[idx])animation.setDuration(200)animation.setEasingCurve(QEasingCurve.OutBounce)animation_group.addAnimation(animation)# if not checked:# animation_group.setDirection(QAbstractAnimation.Forward)# else:# animation_group.setDirection(QAbstractAnimation.Backward)# 將上述注釋部分的代碼層層優化后 得到下面的代碼animation_group.setDirection(checked)animation_group.start(QAbstractAnimation.DeleteWhenStopped)def about(self):print("關于")QMessageBox.about(self,"學亮編程手記","https://blog.csdn.net/a772304419")def reset(self):print("重置")self.account_le.clear()self.password_le.clear()self.confirm_pwd_le.clear()def exit_panel(self):print("退出")def check_register(self):print("注冊")def enable_register_btn(self):print("判定")accout_txt = self.account_le.text()password_txt = self.password_le.text()confirm_pwd_txt = self.confirm_pwd_le.text()if len(accout_txt)>0 and len(password_txt)>0 and len(confirm_pwd_txt)>0 and password_txt == confirm_pwd_txt:self.register_btn.setEnabled(True)else:self.register_btn.setEnabled(False)if __name__ == '__main__':import sysapp = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())register_ui.py
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'register.ui' # # Created by: PyQt5 UI code generator 5.15.1 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(500, 450)Form.setMinimumSize(QtCore.QSize(500, 450))Form.setMaximumSize(QtCore.QSize(500, 450))Form.setStyleSheet("QWidget#Form{\n" " border-image: url(:/register/images/register_bg.jpg);\n" "}")self.main_menu_btn = QtWidgets.QPushButton(Form)self.main_menu_btn.setGeometry(QtCore.QRect(30, 50, 50, 50))self.main_menu_btn.setStyleSheet("QPushButton {\n" " font: 10pt \"楷體\";\n" " border-radius: 25px;\n" " background-color: rgb(254, 83, 123);\n" " border: 2px solid rgb(217, 166, 169);\n" " color:white;\n" "}\n" "QPushButton:hover {\n" " border: 4px double rgb(223, 188, 193);\n" "}\n" "QPushButton:checked {\n" " background-color: rgb(154, 199, 232);\n" "}")self.main_menu_btn.setCheckable(True)self.main_menu_btn.setChecked(False)self.main_menu_btn.setObjectName("main_menu_btn")self.about_menu_btn = QtWidgets.QPushButton(Form)self.about_menu_btn.setGeometry(QtCore.QRect(90, 0, 50, 50))self.about_menu_btn.setStyleSheet("QPushButton {\n" " font: 10pt \"楷體\";\n" " border-radius: 25px;\n" " background-color: rgb(254, 83, 123);\n" " border: 2px solid rgb(217, 166, 169);\n" " color:white;\n" "}\n" "QPushButton:hover {\n" " border: 4px double rgb(223, 188, 193);\n" "}\n" "QPushButton:checked {\n" " background-color: rgb(154, 199, 232);\n" "}")self.about_menu_btn.setCheckable(False)self.about_menu_btn.setChecked(False)self.about_menu_btn.setObjectName("about_menu_btn")self.reset_menu_btn = QtWidgets.QPushButton(Form)self.reset_menu_btn.setGeometry(QtCore.QRect(100, 70, 50, 50))self.reset_menu_btn.setStyleSheet("QPushButton {\n" " font: 10pt \"楷體\";\n" " border-radius: 25px;\n" " background-color: rgb(254, 83, 123);\n" " border: 2px solid rgb(217, 166, 169);\n" " color:white;\n" "}\n" "QPushButton:hover {\n" " border: 4px double rgb(223, 188, 193);\n" "}\n" "QPushButton:checked {\n" " background-color: rgb(154, 199, 232);\n" "}")self.reset_menu_btn.setCheckable(False)self.reset_menu_btn.setChecked(False)self.reset_menu_btn.setObjectName("reset_menu_btn")self.exit_menu_btn = QtWidgets.QPushButton(Form)self.exit_menu_btn.setGeometry(QtCore.QRect(50, 120, 50, 50))self.exit_menu_btn.setStyleSheet("QPushButton {\n" " font: 10pt \"楷體\";\n" " border-radius: 25px;\n" " background-color: rgb(254, 83, 123);\n" " border: 2px solid rgb(217, 166, 169);\n" " color:white;\n" "}\n" "QPushButton:hover {\n" " border: 4px double rgb(223, 188, 193);\n" "}\n" "QPushButton:checked {\n" " background-color: rgb(154, 199, 232);\n" "}")self.exit_menu_btn.setCheckable(False)self.exit_menu_btn.setChecked(False)self.exit_menu_btn.setObjectName("exit_menu_btn")self.layoutWidget = QtWidgets.QWidget(Form)self.layoutWidget.setGeometry(QtCore.QRect(180, 200, 281, 212))self.layoutWidget.setObjectName("layoutWidget")self.formLayout = QtWidgets.QFormLayout(self.layoutWidget)self.formLayout.setContentsMargins(0, 0, 0, 0)self.formLayout.setVerticalSpacing(20)self.formLayout.setObjectName("formLayout")self.label = QtWidgets.QLabel(self.layoutWidget)self.label.setStyleSheet("color: rgb(170, 0, 0);\n" "font: 12pt \"楷體\";")self.label.setObjectName("label")self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)self.account_le = QtWidgets.QLineEdit(self.layoutWidget)self.account_le.setMinimumSize(QtCore.QSize(0, 35))self.account_le.setStyleSheet("background-color: transparent;\n" "color: rgb(255, 85, 127);\n" "border: none;\n" "border-left: 1px solid rgb(170, 0, 0);")self.account_le.setClearButtonEnabled(True)self.account_le.setObjectName("account_le")self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.account_le)self.label_2 = QtWidgets.QLabel(self.layoutWidget)self.label_2.setStyleSheet("color: rgb(170, 0, 0);\n" "font: 12pt \"楷體\";")self.label_2.setObjectName("label_2")self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)self.password_le = QtWidgets.QLineEdit(self.layoutWidget)self.password_le.setMinimumSize(QtCore.QSize(0, 35))self.password_le.setStyleSheet("background-color: transparent;\n" "color: rgb(255, 85, 127);\n" "border: none;\n" "border-left: 1px solid rgb(170, 0, 0);")self.password_le.setClearButtonEnabled(True)self.password_le.setObjectName("password_le")self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.password_le)self.label_3 = QtWidgets.QLabel(self.layoutWidget)self.label_3.setStyleSheet("color: rgb(170, 0, 0);\n" "font: 12pt \"楷體\";")self.label_3.setObjectName("label_3")self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3)self.confirm_pwd_le = QtWidgets.QLineEdit(self.layoutWidget)self.confirm_pwd_le.setMinimumSize(QtCore.QSize(0, 35))self.confirm_pwd_le.setStyleSheet("background-color: transparent;\n" "color: rgb(255, 85, 127);\n" "border: none;\n" "border-left: 1px solid rgb(170, 0, 0);")self.confirm_pwd_le.setClearButtonEnabled(True)self.confirm_pwd_le.setObjectName("confirm_pwd_le")self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.confirm_pwd_le)self.register_btn = QtWidgets.QPushButton(self.layoutWidget)self.register_btn.setEnabled(False)self.register_btn.setMinimumSize(QtCore.QSize(0, 45))self.register_btn.setStyleSheet("QPushButton {\n" " font: 14pt \"楷體\";\n" " color: white;\n" " background-color: rgb(254, 83, 123);\n" " border-radius:10px;\n" "}\n" "QPushButton:disabled {\n" " background-color: rgb(203, 203, 203);\n" "}\n" "\n" "QPushButton:hover {\n" " background-color: rgb(254, 53, 66);\n" "}\n" "\n" "QPushButton:pressed {\n" " background-color: rgb(181, 24, 49);\n" "}")self.register_btn.setObjectName("register_btn")self.formLayout.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.register_btn)self.about_menu_btn.raise_()self.reset_menu_btn.raise_()self.exit_menu_btn.raise_()self.layoutWidget.raise_()self.main_menu_btn.raise_()self.retranslateUi(Form)self.main_menu_btn.clicked['bool'].connect(Form.show_hide_menu)self.about_menu_btn.clicked.connect(Form.about)self.reset_menu_btn.clicked.connect(Form.reset)self.exit_menu_btn.clicked.connect(Form.exit_panel)self.register_btn.clicked.connect(Form.check_register)self.account_le.textChanged['QString'].connect(Form.enable_register_btn)self.password_le.textChanged['QString'].connect(Form.enable_register_btn)self.confirm_pwd_le.textChanged['QString'].connect(Form.enable_register_btn)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.main_menu_btn.setText(_translate("Form", "菜單"))self.about_menu_btn.setText(_translate("Form", "關于"))self.reset_menu_btn.setText(_translate("Form", "重置"))self.exit_menu_btn.setText(_translate("Form", "退出"))self.label.setText(_translate("Form", "賬 號:"))self.account_le.setText(_translate("Form", "111111"))self.label_2.setText(_translate("Form", "密 碼:"))self.password_le.setText(_translate("Form", "111111"))self.label_3.setText(_translate("Form", "確認密碼:"))self.confirm_pwd_le.setText(_translate("Form", "111111"))self.register_btn.setText(_translate("Form", "注 冊")) import images_rcif __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()ui = Ui_Form()ui.setupUi(Form)Form.show()sys.exit(app.exec_())總結
以上是生活随笔為你收集整理的Python-GUI编程PyQT5案例:注册界面扇形菜单动画及相关事件处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python-GUI PyQT5案例:注
- 下一篇: websocket python爬虫_p