# !/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@author  : v_jiaohaicheng@baidu.com
@des     :癞皮狗桌宠"""
import sys
import timefrom PyQt5 import QtGui
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QDialog, QLabel,QWidget
from PyQt5.QtCore import Qt
import threadingWINDOW_X_SIZE = 160
WINDOW_Y_SIZE = 120TIP_X = 140
TIP_Y = 30TIP_TXT_OFFSET_X = 10
TIP_TXT_OFFSET_Y = 10TIP_FLAG = Falseclass MyDialog(QDialog):def __init__(self, Text, x, y):super().__init__()# 设置窗口标志,去除边框self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)self.setAttribute(Qt.WA_TranslucentBackground)self.setGeometry(x, y - TIP_Y, TIP_X, TIP_Y)# 创建标签控件,用于显示文本self.label = QLabel(self)self.label.setGeometry(TIP_TXT_OFFSET_X,TIP_TXT_OFFSET_Y,TIP_X,TIP_Y)# 设置文本self.label.setText(Text)self.label.setAlignment(Qt.AlignLeft)self.label.setStyleSheet("background:transparent")self.label.setAttribute(Qt.WA_TranslucentBackground)self.setModal(True)def mouseDoubleClickEvent(self, event):self.close()def hideEvent(self, event):global TIP_FLAGTIP_FLAG = Falseprint("隐藏界面")def closeEvent(self, event):global TIP_FLAGTIP_FLAG = Falseprint("关闭界面")class MainWindow(QWidget):# single_exit = pyqtSignal(str)def __init__(self):super().__init__()desktop = QApplication.desktop()print(desktop.width(),desktop.height())self.x, self.y = 10, 10# 设置窗口为无边框,透明背景,置顶窗口self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)self.setAttribute(Qt.WA_TranslucentBackground)# 设置窗口大小和位置self.setGeometry(self.x, self.y, WINDOW_X_SIZE, WINDOW_Y_SIZE)# 创建标签控件,用于显示背景图片self.bg_label = QLabel(self)self.bg_label.setGeometry(self.x, self.y, WINDOW_X_SIZE, WINDOW_Y_SIZE)pixmap = QPixmap("pet.png")self.bg_label.setPixmap(pixmap)self.bg_label.setScaledContents(True)self.flag_enter = Falseself.t = ""# self.single_exit.connect(self.exit_thread)t2 = threading.Thread(target=self.stop)t2.start()def enterEvent(self, event):self.flag_enter = Truedef leaveEvent(self, event):self.flag_enter = Falsedef mousePressEvent(self, event):# 当鼠标按下时,记录当前鼠标位置和窗口位置if self.flag_enter:if event.button() == Qt.LeftButton:self.drag_position = event.globalPos() - self.pos()elif event.button() == Qt.RightButton:if self.x >= TIP_X and self.y >= TIP_Y:try:global TIP_FLAGTIP_FLAG = Trueself.t = threading.Thread(target=self.show_tips, args=("癞皮狗在此(^_^)", self.x, self.y,))self.t.start()except BaseException:passpassdef stop(self):while True:global TIP_FLAGwhile self.t != "":while TIP_FLAG:time.sleep(0.1)self.t.join(0)self.t = ""time.sleep(0.1)def show_tips(self, text, x, y):app = QApplication(sys.argv)window = MyDialog(text, x, y)window.show()sys.exit(app.exec_())def mouseMoveEvent(self, event):# 当鼠标移动时,更新窗口位置new_opt = event.globalPos() - self.drag_positionself.x, self.y = new_opt.x(), new_opt.y()self.move(new_opt)if __name__ == '__main__':app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec_())

基于Python-PyQt5实现的桌宠相关推荐

  1. 基于Python pyqt5的随机抽号机源代码 ,可设置抽号器的人数及刷新间隔

    基于Python pyqt5的随机抽号机源代码 ,可设置抽号器的人数及刷新间隔,直接运行main.py即可 完整代码下载地址: pyqt5的随机抽号机源代码 main.py import sys fr ...

  2. 手把手教你写一个基于python+pyqt5的股票盯盘软件

    今天教大家基于Python+pyqt5开发一款股票盯盘小软件,里面含有微信推送.策略分析.回测.实时统计持仓盈亏等功能,其实我们也可以把它叫做股票量化小软件.开发这么一款小软件首先得具备Python的 ...

  3. 【打工人摸鱼系列】python做皮卡丘桌宠,工作都有效率了呢

    嗨害大家好鸭!我是小熊猫❤ 昨天企鹅裙里有小伙伴说想让我用Python整个桌面小挂件~ 做个日历什么的感觉不够好玩~ 今天就来满足一下小伙伴的需求~ 简单带大家来整一只桌面宠物吧~ (顺便借口摸鱼哈哈 ...

  4. 基于Python PYQT5的GUI亚丁号辅助登陆界面

    一.准备工作 1.Python 3.7 (没升级) 2.pyqt5(6的api改了好多并且网上资料少) 3.pycharm社区版 4.OS widows11 二.真相 三.实际代码 主要就是个布局,界 ...

  5. python桌面宠物_如何从零开始制作智能桌宠?

    作者 | 李秋键 责编 | maozz 引言:是否还记得曾经风靡全国的QQ宠物呢,那个又调皮又可爱的QQ企鹅,偶尔还会生病撒娇,需要培养的虚拟宠物,你是否还记得它的样子呢.它是腾讯公司推出的第一款QQ ...

  6. Python制作智能桌宠2

    Python制作新一款智能桌宠 引言:了解过我们之前文章的都知道我们曾经做过一个智能桌宠项目.但是很显然那个程序过于卡段.故这一次我们将重新制作个智能桌宠项目,不同于之前的项目在于,之前使用了大量的j ...

  7. python写桌宠_【Unity/开源】八重樱桌宠(三):Python自动更新、修复描边

    接下来就到了喜闻乐见的PY环节: defget_html(url):try:headers = { "Host": "github.com","Use ...

  8. 基于Python语言和PyQt5的铁路列车运行图系统

    概述 本项目是基于Python语言和PyQt5的非官方性质.简易的中国铁路列车运行图系统.本代码的发布遵循GPLv3协议.在协议允许范围内,作者保留一切权利和最终解释权. 与ETRC的联系 渊源 py ...

  9. 【开源分享】基于Python+OpenCV+PyQt5车牌识别(GUI界面)

    亲测无错:基于Python+OpenCV+PyQt5车牌识别(GUI界面)绝对可以用的!!!!! 基于Python+OpenCV+PyQt5车牌识别(GUI界面) 参考文档

最新文章

  1. andpods授权码订单号分享_不要再让你的接口裸奔了,Boot快速尝试OAuth2密码和授权码模式...
  2. Linux环境搭建 | 手把手教你配置Linux虚拟机
  3. 《研磨设计模式》chap20 享元模式 Flyweight (3)重写应用场景
  4. Apache Ranger、业务背景、现状与需求、大数据安全组件介绍与对别、系统架构及实践、ranger admin、UserSync、plugin、权限模型、权限实现等
  5. esp32 怎么分配freertos 堆栈大小_详解STM32单片机的堆栈
  6. ES6-6 - this指向、箭头函数基本形式、rest运算符
  7. grootjs 简明教程
  8. 监督学习 | 线性分类 之Logistic回归原理及Sklearn实现
  9. docker update_windows 10 安装docker
  10. C++开发 面试问题总结(中兴、CVTE、瑞晟、华为、YY)
  11. 2019蓝桥杯C++B:等差数列(详解)
  12. java treeset 删除_删除Java TreeSet中的最低元素
  13. ccs 中文乱码_关于字符集和乱码的思考
  14. 【FPGA】ds18b20温度传感器
  15. stm32 bootloader启动正常,APP程序会在时钟配置出错原因分析
  16. 2022-2028年中国铝合金行业市场运营格局及前景战略分析报告
  17. Navicat Premium 15 注册出现 No All Pattern Found! File Already Patched?
  18. 人工智能的主要应用领域
  19. 计算机会计系统与手工会计系统有什么异同,会计电算化系统与手工会计系统的比较研究...
  20. PTA n个分数相加

热门文章

  1. MapReduce-WordCount实现按照value降序排序、字符小写、识别不同标点
  2. hge source explor 0x5 input module
  3. MySQL之ANALYZE TABLE
  4. 2020-6-9 吴恩达-改善深层NN-w3 超参数调试(3.3 超参数训练的实践:Pandas(资源少,一次一个模型) VS Caviar(资源多,一次多个模型))
  5. 代理IP中的 proxies 介绍及使用
  6. 关于热阻计算的一道题目
  7. 【Lua】常见知识点汇总(包含常见面试考点)
  8. SAP ABAP修改字段描述(翻译及传输)
  9. iOS笔试题之杭州卓健科技有限公司
  10. 废旧手机改造第二弹之电脑扩展屏幕和变成复制屏幕