Python 玩出花儿,把罗小黑养在自己桌面
2.1 导入库:
1os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = "Lib\site-packages\PyQt5\Qt\plugins"
1import os
2os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = "Lib\site-packages\PyQt5\Qt\plugins"
3import sys
4from PyQt5.QtGui import *
5from PyQt5.QtCore import *
6from PyQt5.QtWidgets import *
7from PyQt5 import QtWidgets, QtGui
8# 导入QT,其中包含一些常量,例如颜色等
9from PyQt5.QtCore import Qt
10# 导入常用组件
11from PyQt5.QtWidgets import QApplication, QMainWindow
12from PyQt5.QtWidgets import QLabel
13from threading import Thread
14# 使用调色板等
15from PyQt5.QtGui import QIcon, QMovie
16import time
17import os
18import random
1super(DemoWin, self).__init__()
2self.initUI()
3# 初始化,不规则窗口
4self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
5self.setAutoFillBackground(False)
6self.setAttribute(Qt.WA_TranslucentBackground, True)
7self.repaint()
1# 是否跟随鼠标
2self.is_follow_mouse = False
3self.move(1650,20)
1with open("data.txt", "r") as f:
2 text = f.read()
3 self.sentence = text.split("\n")
1# 设置托盘选项
2iconpath="1.jpg"
1#右键菜单
2quit_action = QAction(u'退出', self, triggered=self.quit)
3quit_action.setIcon(QIcon(iconpath))
4showwin = QAction(u'显示', self, triggered=self.showwin)
5self.tray_icon_menu = QMenu(self)
6self.tray_icon_menu.addAction(showwin)
7self.tray_icon_menu.addAction(quit_action)
8self.tray_icon = QSystemTrayIcon(self)
9self.tray_icon.setIcon(QIcon(iconpath))
10self.tray_icon.setContextMenu(self.tray_icon_menu)
11self.tray_icon.show()
1#窗口透明程度
2self.setWindowOpacity(1)
1# 对话框
2QToolTip.setFont(QFont('楷体', 14))
3y = ['不要随便摸人家啦', '每次见到主人都很开心呀', '话说最近主人都没理我诶', '再摸我的话小心我生气了', '恭喜发财大吉大利']
4self.setToolTip(random.choice(y))
5# 每隔一段时间做个动作
6self.timer = QTimer()
7self.timer.timeout.connect(self.randomAct)
8self.timer.start(7000)
9self.condition = 0
10self.talk_condition=0
1# 每隔一段时间做个动作
2self.timer1 = QTimer()
3self.timer1.timeout.connect(self.talk)
4self.timer1.start(5000)
5self.pet1 = []
6for i in os.listdir("biu"):
7 self.pet1.append("biu/" + i)
2.3 设置GUI界面的初始化:
1def initUI(self):
2 # 将窗口设置为动图大小
3 self.resize(400, 400)
4 self.label1 = QLabel("", self)
5 self.label1.setStyleSheet("font:15pt '楷体';border-width: 1px;color:blue;") # 设置边框
6 # 使用label来显示动画
7 self.label = QLabel("", self)
8 # label大小设置为动画大小
9 self.label.setFixedSize(200, 200)
10 # 设置动画路径
11 self.movie = QMovie("./biu/biu12.gif")
12 #宠物大小
13 self.movie.setScaledSize(QSize(200, 200))
14 # 将动画添加到label中
15 self.label.setMovie(self.movie)
16 # 开始播放动画
17 self.movie.start()
18 #透明窗口
19 #self.setWindowOpacity(1)
20 # 添加窗口标题
21 self.setWindowTitle("GIFDemo")
1'''鼠标左键按下时, 宠物将和鼠标位置绑定'''
2def mousePressEvent(self, event):
3 if event.button() == Qt.LeftButton:
4 self.is_follow_mouse = True
5 self.mouse_drag_pos = event.globalPos() - self.pos()
6 event.accept()
7 self.setCursor(QCursor(Qt.OpenHandCursor))
8 self.movie = QMovie("./biu/biu10.gif")
9 # 宠物大小
10 self.movie.setScaledSize(QSize(200, 200))
11 # 将动画添加到label中
12 self.label.setMovie(self.movie)
13 # 开始播放动画
14 self.movie.start()
15'''鼠标移动, 则宠物也移动'''
16def mouseMoveEvent(self, event):
17 if Qt.LeftButton and self.is_follow_mouse:
18 self.move(event.globalPos() - self.mouse_drag_pos)
19 event.accept()
20'''鼠标释放时, 取消绑定'''
21def mouseReleaseEvent(self, event):
22 self.is_follow_mouse = False
23 self.setCursor(QCursor(Qt.ArrowCursor))
2.5 设置鼠标移入时变换:
1def enterEvent(self, event): # 鼠标移进时调用
2 #print('鼠标移入')
3 self.setCursor(Qt.ClosedHandCursor) # 设置鼠标形状。需要from PyQt5.QtGui import QCursor,from PyQt5.QtCore import Qt
4 '''
5 Qt.PointingHandCursor 指向手 Qt.WaitCursor 旋转的圆圈
6 ArrowCursor 正常箭头 Qt.ForbiddenCursor 红色禁止圈
7 Qt.BusyCursor 箭头+旋转的圈 Qt.WhatsThisCursor 箭头+问号
8 Qt.CrossCursor 十字 Qt.SizeAllCursor 箭头十字
9 Qt.UpArrowCursor 向上的箭头 Qt.SizeBDiagCursor 斜向上双箭头
10 Qt.IBeamCursor I形状 Qt.SizeFDiagCursor 斜向下双箭头
11 Qt.SizeHorCursor 水平双向箭头 Qt.SizeVerCursor 竖直双向箭头
12 Qt.SplitHCursor Qt.SplitVCursor
13 Qt.ClosedHandCursor 非指向手 Qt.OpenHandCursor 展开手
14 '''
15 # self.unsetCursor() #取消设置的鼠标形状
2.6 设置鼠标右键菜单:
1# 当按右键的时候,这个event会被触发
2def contextMenuEvent(self, event):
3 menu = QMenu(self)
4 code = menu.addAction("代码")
5 py = menu.addAction("python—test")
6 hide = menu.addAction("隐藏")
7 quitAction = menu.addAction("退出")
8 action = menu.exec_(self.mapToGlobal(event.pos()))
9 if action == quitAction:
10 qApp.quit()
11 if action == hide:
12 self.setWindowOpacity(0)
13 if action == py:
14 os.startfile("python练习.bat")
15 if action == code:
16 os.startfile("代码.bat")
17'''退出程序'''
18def quit(self):
19 self.close()
20 sys.exit()
21'''显示'''
22def showwin(self):
23 self.setWindowOpacity(1)
2.7 设置宠物状态的改变:
1'''随机做一个动作'''
2def randomAct(self):
3 if not self.condition:
4 print("状态变更")
5 print(random.choice(self.pet1))
6 self.movie = QMovie(random.choice(self.pet1))
7 # 宠物大小
8 self.movie.setScaledSize(QSize(200, 200))
9 # 将动画添加到label中
10 self.label.setMovie(self.movie)
11 # 开始播放动画
12 self.movie.start()
13 self.condition=1
14 else:
15 print("状态还原")
16 # 设置动画路径
17 self.movie = QMovie("./biu/biu12.gif")
18 # 宠物大小
19 self.movie.setScaledSize(QSize(200, 200))
20 # 将动画添加到label中
21 self.label.setMovie(self.movie)
22 # 开始播放动画
23 self.movie.start()
24 self.condition=0
2.8 设置宠物对话窗口:
1def talk(self):
2 if not self.talk_condition:
3 self.label1.setText(random.choice(self.sentence))
4 self.label1.setStyleSheet("font: bold;font:15pt '楷体';color:yellow;background-color: black") # 设置边框
5 self.label1.adjustSize()
6 self.talk_condition=1
7 else:
8 self.label1.setText("")
9 self.label1.adjustSize()
10 self.talk_condition = 0
更多精彩推荐
☞315 曝光人脸识别摄像头,进店瞬间偷走你的“脸”,自动分析心情
☞玩转3D全息图像!AI即刻生成
☞用 Python 动态可视化,看看比特币这几年
☞Python 搭建车道智能检测系统
点分享 点收藏 点点赞 点在看
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平寄语澳门 7901213
- 2 美军为什么会击落自己的战机? 7903173
- 3 张雨绮 为了讨大家喜欢才穿成这样 7881211
- 4 我国工业经济平稳向好 7759044
- 5 三战是否已经开始?普京回应 7650189
- 6 23岁的考场和18岁是不同的 7566423
- 7 老人花2万买保健床垫后再不愿去医院 7402759
- 8 湖南卫视声明 7358061
- 9 柳岩白色蕾丝鱼尾裙 7279073
- 10 美国女教师强奸12岁男童怀孕获刑 7159136