Python——pyqt5界面小脚手架

小脚手架(后续随缘优化)

UI还待优化

初学QT,自己想做一个工具,先搭建界面玩玩

实现了界面的基本功能,绑定事件,窗口移动,放大缩小,最小化

后续布局再做微调

 代码包

pyqt5界面小脚手架.zip - 蓝奏云

 代码

import sys

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt, QPropertyAnimation, QRect, QEasingCurve
from PyQt5.QtGui import QColor, QPainter, QLinearGradient, QPalette
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget

from main1017 import Ui_MainWindow



class MyMainForm(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.start_x = None
        self.start_y = None
        self.anim=None
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.setWindowFlags(Qt.FramelessWindowHint)  # 设置窗口标志:隐藏窗口边框

        self.btn_img.clicked.connect(self.choose_img)

        # Bind button scale up and scale down
        self.btn_max.clicked.connect(self.btn_max_click)

        self.btn_min.clicked.connect(self.minimize)

        self.btn_stop.clicked.connect(self.closeEvent)


    # Window scale up and scale down
    def btn_max_click(self):
        if self.isMaximized():
            self.showNormal()
            # self.btn_stop.setText('放大窗口')
        else:
            self.showMaximized()
            # self.btn_stop.setText('缩小窗口')

    # 重写 closeEvent 函数,关闭窗口并停止程序运行
    def closeEvent(self, event):
        sys.exit()

    # 最小化窗口
    def minimize(self):
        self.showMinimized()

    # 鼠标左键释放时被触发
    def mouseReleaseEvent(self, event):
        self.start_x = None
        self.start_y = None

    # 在鼠标左键按下时被触发
    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            super(MyMainForm, self).mousePressEvent(event)
            self.start_x = event.x()
            self.start_y = event.y()

    # 在鼠标移动时被触发
    def mouseMoveEvent(self, event):
        try:
            super(MyMainForm, self).mouseMoveEvent(event)
            dis_x = event.x() - self.start_x
            dis_y = event.y() - self.start_y
            self.move(self.x() + dis_x, self.y() + dis_y)
        except:
            pass

    # 窗口设置阴影效果
    def effect_shadow_style(self, widget):
        effect_shadow = QtWidgets.QGraphicsDropShadowEffect(self)
        effect_shadow.setOffset(12, 12)  # 偏移
        effect_shadow.setBlurRadius(128)  # 阴影半径
        effect_shadow.setColor(QColor(155, 230, 237, 150))  # 阴影颜色
        widget.setGraphicsEffect(effect_shadow)

    def choose_img(self):
        self.plainTextEdit.appendPlainText('点击了添加图片')

    # 背景渐变
    # def paintEvent(self, event):
    #     painter = QPainter(self)
    #     gradient = QLinearGradient(0, 0, self.width(), self.height())
    #     gradient.setColorAt(0, QColor(89, 217, 212, 128))
    #     gradient.setColorAt(1, QColor(104, 202, 237, 128))
    #     gradient.setStart(0, 0)
    #     gradient.setFinalStop(self.width(), self.height())
    #     painter.setBrush(gradient)
    #     painter.drawRect(self.rect())

    #



if __name__ == "__main__":


    app = QApplication(sys.argv)
    myWin = MyMainForm()
    myWin.show()


    # myWin.btn_img.clicked.connect(click())


    sys.exit(app.exec_())
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'main1017.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# 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, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(995, 675)
        MainWindow.setStyleSheet("QScrollBar:horizontal{\n"
"    height:8px;\n"
"    background:rgba(0,0,0,0%);\n"
"border-radius:4px;\n"
"\n"
"}\n"
"QScrollBar::handle:horizontal{\n"
"    background:rgba(125,125,125,50%);\n"
"border-radius:4px;\n"
"}\n"
"QScrollBar::handle:horizontal:hover{\n"
"    background:rgba(125,125,125,100%);\n"
"    min-width:0;\n"
"}\n"
"QScrollBar::add-line:horizontal{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::sub-line:horizontal{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::add-line:horizontal:hover{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::sub-line:horizontal:hover{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal\n"
"{\n"
"    background:rgba(0,0,0,10%);\n"
"    border-radius:4px;\n"
"}\n"
"\n"
"QScrollBar:vertical{\n"
"    width:8px;\n"
"    background:rgba(0,0,0,0%);\n"
"\n"
"}\n"
"QScrollBar::handle:vertical{\n"
"    width:0px;\n"
"    background:rgba(125,125,125,50%);\n"
"    border-radius:4px;\n"
"}\n"
"QScrollBar::handle:vertical:hover{\n"
"    width:0px;\n"
"    background:rgba(125,125,125,100%);\n"
"    border-radius:4px;\n"
"    min-width:20;\n"
"}\n"
"QScrollBar::add-line:vertical{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::sub-line:vertical{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::add-line:vertical:hover{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::sub-line:vertical:hover{\n"
"    height:0px;width:0px;\n"
"\n"
"}\n"
"QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical\n"
"{\n"
"    background:rgba(0,0,0,10%);\n"
"    border-radius:4px;\n"
"}\n"
"")
        self.main = QtWidgets.QWidget(MainWindow)
        self.main.setObjectName("main")
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.main)
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        self.mainmain = QtWidgets.QFrame(self.main)
        self.mainmain.setStyleSheet("QFrame#frame{\n"
"    background-color: rgba(255, 255, 255, 150);\n"
"    border-radius:20px;\n"
"}")
        self.mainmain.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.mainmain.setFrameShadow(QtWidgets.QFrame.Raised)
        self.mainmain.setObjectName("mainmain")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.mainmain)
        self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_7.setSpacing(12)
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.chuizhi = QtWidgets.QVBoxLayout()
        self.chuizhi.setSpacing(12)
        self.chuizhi.setObjectName("chuizhi")
        self.frame_3 = QtWidgets.QFrame(self.mainmain)
        self.frame_3.setStyleSheet(".QFrame{\n"
"    background-color: rgba(205,254,249, 0.95);\n"
"    border-radius:20px;\n"
"}")
        self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_3.setObjectName("frame_3")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.frame_3)
        self.verticalLayout_3.setContentsMargins(10, 11, 4, 11)
        self.verticalLayout_3.setSpacing(0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.windowRight = QtWidgets.QHBoxLayout()
        self.windowRight.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
        self.windowRight.setContentsMargins(0, 0, 0, 0)
        self.windowRight.setSpacing(10)
        self.windowRight.setObjectName("windowRight")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.windowRight.addItem(spacerItem)
        self.btn_min = QtWidgets.QPushButton(self.frame_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.btn_min.sizePolicy().hasHeightForWidth())
        self.btn_min.setSizePolicy(sizePolicy)
        self.btn_min.setMaximumSize(QtCore.QSize(20, 20))
        self.btn_min.setStyleSheet("QPushButton {\n"
"    background-color: #07BB2C;\n"
"    border: 2px solid #07BB2C;\n"
"    color: #3498db;\n"
"    padding: 1px;\n"
"    border-radius: 10px;\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    background-color: #09ED3A;\n"
"    color: #ffffff;\n"
"}")
        self.btn_min.setText("")
        self.btn_min.setObjectName("btn_min")
        self.windowRight.addWidget(self.btn_min)
        self.btn_max = QtWidgets.QPushButton(self.frame_3)
        self.btn_max.setMaximumSize(QtCore.QSize(20, 20))
        self.btn_max.setStyleSheet("QPushButton {\n"
"    background-color: #FFB206;\n"
"    border: 2px solid #FFB206;\n"
"    color: #3498db;\n"
"    padding: 1px;\n"
"    border-radius: 10px;\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    background-color: #FFC033;\n"
"    color: #ffffff;\n"
"}")
        self.btn_max.setText("")
        self.btn_max.setObjectName("btn_max")
        self.windowRight.addWidget(self.btn_max)
        self.btn_stop = QtWidgets.QPushButton(self.frame_3)
        self.btn_stop.setMaximumSize(QtCore.QSize(20, 20))
        self.btn_stop.setStyleSheet("\n"
"\n"
"QPushButton {\n"
"    background-color: #EE514A;\n"
"    border: 2px solid #EE514A;\n"
"    color: #3498db;\n"
"    padding: 1px;\n"
"    border-radius: 10px;\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    background-color: #F1756F;\n"
"    color: #ffffff;\n"
"}")
        self.btn_stop.setText("")
        self.btn_stop.setObjectName("btn_stop")
        self.windowRight.addWidget(self.btn_stop)
        self.verticalLayout_3.addLayout(self.windowRight)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.frame_4 = QtWidgets.QFrame(self.frame_3)
        self.frame_4.setStyleSheet(".QFrame{\n"
"    background-color: rgba(255, 255, 255, 0);\n"
"    border-radius:20px;\n"
"}")
        self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_4.setObjectName("frame_4")
        self.horizontalLayout_13 = QtWidgets.QHBoxLayout(self.frame_4)
        self.horizontalLayout_13.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_13.setObjectName("horizontalLayout_13")
        self.frame_2 = QtWidgets.QFrame(self.frame_4)
        self.frame_2.setMaximumSize(QtCore.QSize(200, 1000))
        self.frame_2.setStyleSheet("QFrame#frame_2{\n"
"    background-color: rgba(255, 255, 255, 255);\n"
"    border-radius:20px;\n"
"}")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame_2)
        self.verticalLayout_2.setContentsMargins(-1, -1, -1, 36)
        self.verticalLayout_2.setSpacing(2)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.frame_5 = QtWidgets.QFrame(self.frame_2)
        self.frame_5.setStyleSheet("border:none")
        self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_5.setObjectName("frame_5")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.frame_5)
        self.horizontalLayout_6.setContentsMargins(-1, 24, -1, -1)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.widget_6 = QtWidgets.QWidget(self.frame_5)
        self.widget_6.setEnabled(True)
        self.widget_6.setMinimumSize(QtCore.QSize(65, 65))
        self.widget_6.setMaximumSize(QtCore.QSize(65, 65))
        self.widget_6.setMouseTracking(False)
        self.widget_6.setTabletTracking(False)
        self.widget_6.setAcceptDrops(False)
        self.widget_6.setWhatsThis("")
        self.widget_6.setAutoFillBackground(False)
        self.widget_6.setStyleSheet("border-radius:32px;\n"
"background-color: rgb(85, 255, 255);\n"
"\n"
"background-image: url(:/svg/img/svg/对号1 (1).png);")
        self.widget_6.setInputMethodHints(QtCore.Qt.ImhNone)
        self.widget_6.setObjectName("widget_6")
        self.horizontalLayout_6.addWidget(self.widget_6)
        self.verticalLayout_2.addWidget(self.frame_5)
        self.label = QtWidgets.QLabel(self.frame_2)
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setStyleSheet("color: rgb(22, 54, 53)")
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout_2.addWidget(self.label)
        self.frame_6 = QtWidgets.QFrame(self.frame_2)
        self.frame_6.setStyleSheet("QFrame{\n"
"    \n"
"background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0  rgba(36,210,240,1), stop:1 rgba(43,212,193,1));\n"
"\n"
"    border-radius:10px;\n"
"    margin-top: 10px;\n"
"    margin-bottom: 20px;\n"
"\n"
"}\n"
"\n"
"")
        self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_6.setObjectName("frame_6")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame_6)
        self.horizontalLayout.setSpacing(8)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.btn_img = QtWidgets.QPushButton(self.frame_6)
        self.btn_img.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: transparent;\n"
"    font: 75 9pt \"江城斜宋体 700W\";\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    color: #000000;\n"
"    background-color: transparent;\n"
"}")
        self.btn_img.setObjectName("btn_img")
        self.verticalLayout.addWidget(self.btn_img)
        self.btn_option = QtWidgets.QPushButton(self.frame_6)
        self.btn_option.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: transparent;\n"
"    font: 75 9pt \"江城斜宋体 700W\";\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    color: #000000;\n"
"    background-color: transparent;\n"
"}")
        self.btn_option.setObjectName("btn_option")
        self.verticalLayout.addWidget(self.btn_option)
        self.btn_time = QtWidgets.QPushButton(self.frame_6)
        self.btn_time.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: transparent;\n"
"    font: 75 9pt \"江城斜宋体 700W\";\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    color: #000000;\n"
"    background-color: transparent;\n"
"}")
        self.btn_time.setObjectName("btn_time")
        self.verticalLayout.addWidget(self.btn_time)
        self.btn_version = QtWidgets.QPushButton(self.frame_6)
        self.btn_version.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: transparent;\n"
"    font: 75 9pt \"江城斜宋体 700W\";\n"
"}\n"
" \n"
"QPushButton:hover {\n"
"    color: #000000;\n"
"    background-color: transparent;\n"
"}")
        self.btn_version.setObjectName("btn_version")
        self.verticalLayout.addWidget(self.btn_version)
        self.horizontalLayout.addLayout(self.verticalLayout)
        self.verticalLayout_2.addWidget(self.frame_6)
        self.plainTextEdit = QtWidgets.QPlainTextEdit(self.frame_2)
        self.plainTextEdit.setMaximumSize(QtCore.QSize(50000, 3000))
        self.plainTextEdit.setStyleSheet("background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0  rgba(170,219,255,1), stop:1 rgba(19,157,255,1));\n"
"\n"
"    border-radius:10px;\n"
"\n"
"    margin-top: 10px;\n"
"    margin-bottom: 20px;\n"
"\n"
"")
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.verticalLayout_2.addWidget(self.plainTextEdit)
        self.verticalLayout_2.setStretch(2, 1)
        self.horizontalLayout_13.addWidget(self.frame_2)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_13.addItem(spacerItem1)
        self.horizontalLayout_2.addWidget(self.frame_4)
        self.verticalLayout_3.addLayout(self.horizontalLayout_2)
        self.chuizhi.addWidget(self.frame_3)
        self.horizontalLayout_7.addLayout(self.chuizhi)
        self.horizontalLayout_8.addWidget(self.mainmain)
        MainWindow.setCentralWidget(self.main)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "工具窗口"))
        self.btn_img.setText(_translate("MainWindow", "添加图片"))
        self.btn_option.setText(_translate("MainWindow", "配置操作"))
        self.btn_time.setText(_translate("MainWindow", "循环次数"))
        self.btn_version.setText(_translate("MainWindow", "版本信息"))
        self.plainTextEdit.setPlainText(_translate("MainWindow", "欢迎使用wx-快捷工具!"))
import resources_rc

猜你喜欢

转载自blog.csdn.net/Pan_peter/article/details/130508814