pyqt -- 实现Toast/多页面跳转/弹框

# PyQt5==5.12
from PyQt5.QtCore import Qt, QPropertyAnimation, QSize, QTimer
from PyQt5.QtGui import QIcon, QPixmap, QPainter, QPaintEvent, QBrush
from PyQt5.QtWidgets import QMainWindow, QMessageBox, QStackedWidget, QDesktopWidget, QHBoxLayout, QWidget, QLabel, \
    QSizePolicy, QFileDialog
    
class Toast(QWidget):
    style = """#LabelMessage{color:white;font-family:Microsoft YaHei;}"""

    def __init__(self, message='', timeout=2000, parent=None):
        """
        @param message: 提示信息
        @param timeout: 窗口显示时长
        @param parent: 父窗口控件
        """
        super(Toast, self).__init__()
        self.parent = parent
        # 除了成功之外其他消息图标一律使用错误图标(有局限性:成功的具体信息有很多种,但这里没办法区分,待改)
        self.timer = QTimer()
        # 由于不知道动画结束的事件,所以借助QTimer来关闭窗口,动画结束就关闭窗口,所以这里的事件要和动画时间一样
        self.timer.singleShot(timeout, self.close)  # singleShot表示timer只会启动一次

        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
        # self.setWindowOpacity(0.9)  # 设置窗口透明度
        self.setAttribute(Qt.WA_TranslucentBackground)  # 设置窗口透明
        self.setObjectName('Toast')
        # self.setFixedSize(QSize(220, 100))
        self.setMinimumSize(QSize(220, 100))
        self.setMaximumSize(QSize(220, 180))

        layout = QHBoxLayout()
        layout.setContentsMargins(20, -1, 20, -1)
        layout.setObjectName("HorizontalLayout")
        self.setLayout(layout)

        self.initUi(layout, message)
        self.createAnimation(timeout)

        self.setStyleSheet(Toast.style)
        self.center()

    def initUi(self, layout, message):
        messageLabel = QLabel()
        # 实现QLabel自动换行
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(messageLabel.sizePolicy().hasHeightForWidth())
        messageLabel.setSizePolicy(sizePolicy)
        messageLabel.setWordWrap(True)
        messageLabel.setText(message)
        messageLabel.setTextFormat(Qt.AutoText)
        messageLabel.setScaledContents(True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
看起来你在尝试在Windows系统中使用`pip`安装PyQt5库,但遇到了错误,提示说找不到`pip`命令。这个错误通常表示`pip`不是系统的PATH环境变量中默认包含的命令,或者`pip`没有正确安装。 解决这个问题的步骤如下: 1. **检查pip是否已安装**:首先,打开命令提示符(CMD)或PowerShell,输入`python -m pip --version`,如果返回版本号,说明pip已安装,但可能未添加到PATH。 2. **添加Python到PATH**:如果没有找到pip,你需要确保Python的安装路径被添加到了系统的环境变量PATH中。对于Python 3,路径通常是`C:\Users\[用户名]\AppData\Local\Programs\Python\Python3X\Scripts`或`C:\Users\[用户名]\AppData\Local\Programs\Python\Python3X`,其中X是你的Python版本号。 3. **重新定位pip**:如果只在特定目录下能找到pip,你可以尝试在那个目录下运行`pip install`。例如,如果`pip.exe`在`C:\Windows\System32`目录,直接输入`C:\Windows\System32\pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple`。 4. **使用管理员权限**:有时,由于权限问题,从非系统路径运行`pip`可能需要右键点击命令提示符并选择“以管理员身份运行”。 5. **重新安装pip**:如果以上方法都不奏效,你可能需要卸载并重新安装Python,确保pip能正确安装和添加到PATH。 6. **使用国内镜像源**:当你通过`-i`选项指定国内镜像源时,确保网络连接正常,并且镜像源可以访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像风一样的男人@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值