之前给大家分享过灭霸命令GitHub地址:https://github.com/hotvulcan/Thanos.sh,本文使用Python+PyQt5实现灭霸响指,实现过程较简单,上效果图~

GUI实现代码如下:

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(766, 760)

self.centralwidget = QtWidgets.QWidget(MainWindow)

self.centralwidget.setObjectName("centralwidget")

self.btn_start = QtWidgets.QPushButton(self.centralwidget)

self.btn_start.setGeometry(QtCore.QRect(60, 10, 111, 101))

self.btn_start.setStyleSheet("background-color: rgba(255, 255, 255, 0);")

self.btn_start.setText("")

self.btn_start.setObjectName("btn_start")

self.widget = QtWidgets.QWidget(self.centralwidget)

self.widget.setGeometry(QtCore.QRect(60, 120, 631, 441))

self.widget.setObjectName("widget")

self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)

self.verticalLayout.setContentsMargins(0, 0, 0, 0)

self.verticalLayout.setObjectName("verticalLayout")

self.horizontalLayout = QtWidgets.QHBoxLayout()

self.horizontalLayout.setObjectName("horizontalLayout")

self.label_1 = QtWidgets.QLabel(self.widget)

self.label_1.setAlignment(QtCore.Qt.AlignCenter)

self.label_1.setObjectName("label_1")

self.horizontalLayout.addWidget(self.label_1)

self.label_2 = QtWidgets.QLabel(self.widget)

self.label_2.setAlignment(QtCore.Qt.AlignCenter)

self.label_2.setObjectName("label_2")

self.horizontalLayout.addWidget(self.label_2)

self.label_3 = QtWidgets.QLabel(self.widget)

self.label_3.setAlignment(QtCore.Qt.AlignCenter)

self.label_3.setObjectName("label_3")

self.horizontalLayout.addWidget(self.label_3)

self.label_4 = QtWidgets.QLabel(self.widget)

self.label_4.setAlignment(QtCore.Qt.AlignCenter)

self.label_4.setObjectName("label_4")

self.horizontalLayout.addWidget(self.label_4)

self.verticalLayout.addLayout(self.horizontalLayout)

self.horizontalLayout_2 = QtWidgets.QHBoxLayout()

self.horizontalLayout_2.setObjectName("horizontalLayout_2")

self.label_5 = QtWidgets.QLabel(self.widget)

self.label_5.setAlignment(QtCore.Qt.AlignCenter)

self.label_5.setObjectName("label_5")

self.horizontalLayout_2.addWidget(self.label_5)

self.label_6 = QtWidgets.QLabel(self.widget)

self.label_6.setAlignment(QtCore.Qt.AlignCenter)

self.label_6.setObjectName("label_6")

self.horizontalLayout_2.addWidget(self.label_6)

self.label_7 = QtWidgets.QLabel(self.widget)

self.label_7.setAlignment(QtCore.Qt.AlignCenter)

self.label_7.setObjectName("label_7")

self.horizontalLayout_2.addWidget(self.label_7)

self.label_8 = QtWidgets.QLabel(self.widget)

self.label_8.setAlignment(QtCore.Qt.AlignCenter)

self.label_8.setObjectName("label_8")

self.horizontalLayout_2.addWidget(self.label_8)

self.verticalLayout.addLayout(self.horizontalLayout_2)

self.horizontalLayout_3 = QtWidgets.QHBoxLayout()

self.horizontalLayout_3.setObjectName("horizontalLayout_3")

self.label_9 = QtWidgets.QLabel(self.widget)

self.label_9.setAlignment(QtCore.Qt.AlignCenter)

self.label_9.setObjectName("label_9")

self.horizontalLayout_3.addWidget(self.label_9)

self.label_10 = QtWidgets.QLabel(self.widget)

self.label_10.setAlignment(QtCore.Qt.AlignCenter)

self.label_10.setObjectName("label_10")

self.horizontalLayout_3.addWidget(self.label_10)

self.label_11 = QtWidgets.QLabel(self.widget)

self.label_11.setAlignment(QtCore.Qt.AlignCenter)

self.label_11.setObjectName("label_11")

self.horizontalLayout_3.addWidget(self.label_11)

self.label_12 = QtWidgets.QLabel(self.widget)

self.label_12.setAlignment(QtCore.Qt.AlignCenter)

self.label_12.setObjectName("label_12")

self.horizontalLayout_3.addWidget(self.label_12)

self.verticalLayout.addLayout(self.horizontalLayout_3)

self.widget1 = QtWidgets.QWidget(self.centralwidget)

self.widget1.setGeometry(QtCore.QRect(220, 570, 321, 151))

self.widget1.setObjectName("widget1")

self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget1)

self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)

self.horizontalLayout_4.setObjectName("horizontalLayout_4")

self.label_13 = QtWidgets.QLabel(self.widget1)

self.label_13.setAlignment(QtCore.Qt.AlignCenter)

self.label_13.setObjectName("label_13")

self.horizontalLayout_4.addWidget(self.label_13)

self.label_14 = QtWidgets.QLabel(self.widget1)

self.label_14.setAlignment(QtCore.Qt.AlignCenter)

self.label_14.setObjectName("label_14")

self.horizontalLayout_4.addWidget(self.label_14)

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 766, 26))

self.menubar.setObjectName("menubar")

MainWindow.setMenuBar(self.menubar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

_translate = QtCore.QCoreApplication.translate

MainWindow.setWindowTitle(_translate("MainWindow", "FPO"))

self.label_1.setText(_translate("MainWindow", "1"))

self.label_2.setText(_translate("MainWindow", "1"))

self.label_3.setText(_translate("MainWindow", "1"))

self.label_4.setText(_translate("MainWindow", "1"))

self.label_5.setText(_translate("MainWindow", "1"))

self.label_6.setText(_translate("MainWindow", "1"))

self.label_7.setText(_translate("MainWindow", "1"))

self.label_8.setText(_translate("MainWindow", "1"))

self.label_9.setText(_translate("MainWindow", "1"))

self.label_10.setText(_translate("MainWindow", "1"))

self.label_11.setText(_translate("MainWindow", "1"))

self.label_12.setText(_translate("MainWindow", "1"))

self.label_13.setText(_translate("MainWindow", "1"))

self.label_14.setText(_translate("MainWindow", "1"))

项目启动代码如下:

# -*- coding: utf-8 -*-

import sys

import time

import threading

from PyQt5.QtGui import QPixmap, QImage

from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QGraphicsOpacityEffect

from GUI import Ui_MainWindow

import cv2

import numpy as np

def cv_imread(file_path):

cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)

return cv_img

class SnapFinger(QMainWindow, Ui_MainWindow):

num = 0

flag_btn_start = True

flag_hero_revive = False

choose_list = []

def __init__(self):

super(SnapFinger, self).__init__()

self.setupUi(self)

self.setFixedSize(self.width(), self.height())

self.label_all = [self.label_1, self.label_2, self.label_3,

self.label_4, self.label_5, self.label_6,

self.label_7, self.label_8, self.label_9,

self.label_10, self.label_11, self.label_12,

self.label_13, self.label_14]

self.deal_with_label_all()

file_path_1 = 'resources/BlackPanther.jpg'

file_path_2 = 'resources/BlackWidow.jpg'

file_path_3 = 'resources/CaptainAmerica.jpg'

file_path_4 = 'resources/Clint.jpg'

file_path_5 = 'resources/DoctorStranger.jpg'

file_path_6 = 'resources/Drax.jpg'

file_path_7 = 'resources/Groot.jpg'

file_path_8 = 'resources/Hulk.jpg'

file_path_9 = 'resources/Mantis.jpg'

file_path_10 = 'resources/Nebula.jpg'

file_path_11 = 'resources/SpiderMan.jpg'

file_path_12 = 'resources/Thor.jpg'

file_path_13 = 'resources/Vision.jpg'

file_path_14 = 'resources/Winter.jpg'

self.file_path_label_all = [file_path_1, file_path_2, file_path_3, file_path_4,

file_path_5, file_path_6, file_path_7, file_path_8,

file_path_9, file_path_10, file_path_11, file_path_12,

file_path_13, file_path_14]

self.load_image_to_label()

btn_img_file_1 = "QPushButton{border-image: url(resources/thanos_1.png)}"

btn_img_file_2 = "QPushButton{border-image: url(resources/thanos_2.png)}"

btn_img_file_3 = "QPushButton{border-image: url(resources/thanos_3.png)}"

btn_img_file_4 = "QPushButton{border-image: url(resources/thanos_4.png)}"

self.file_path_btn_all = [btn_img_file_1, btn_img_file_2, btn_img_file_3, btn_img_file_4]

self.load_image_to_btn()

self.btn_start.clicked.connect(self.slot_btn_start)

def deal_with_label_all(self):

for i in range(14):

self.label_all[i].setScaledContents(True)

def deal_with_image_for_cv2(self, image):

# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage

height, width, channel = image.shape

bytesPerLine = 3 * width

self.qImg = QImage(image.data, width, height, bytesPerLine,

QImage.Format_RGB888).rgbSwapped()

# 将Qimage显示出来

px = QPixmap()

px_1 = px.fromImage(self.qImg)

return px_1

def load_image_to_btn(self):

self.btn_start.setStyleSheet(self.file_path_btn_all[0])

def load_image_to_label(self):

for i in range(14):

self.img = cv_imread(self.file_path_label_all[i])

if self.img.size == 1:

return

px_1 = self.deal_with_image_for_cv2(self.img)

self.label_all[i].setPixmap(px_1)

def select_image_random(self):

z = 0

temp_list = []

while z < 7:

tt = np.random.choice([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])

if tt not in temp_list:

temp_list.append(int(tt))

z += 1

else:

pass

for i in temp_list:

self.choose_list.append(self.label_all[i])

def appear_fun(self, cn):

n = 0

op = QGraphicsOpacityEffect()

for i in range(100):

op.setOpacity(n)

cn.setGraphicsEffect(op)

n += 0.01

time.sleep(0.01)

def image_appear(self):

self.btn_start.setStyleSheet(self.file_path_btn_all[3])

for cn in self.choose_list:

self.appear_fun(cn)

time.sleep(0.05)

self.choose_list = []

self.btn_start.setStyleSheet(self.file_path_btn_all[0])

self.flag_btn_start = True

def disappear_fun(self, cn):

n = 1

op = QGraphicsOpacityEffect()

for i in range(100):

op.setOpacity(n)

cn.setGraphicsEffect(op)

n -= 0.01

time.sleep(0.01)

def image_disappear(self):

self.select_image_random()

for cn in self.choose_list:

self.disappear_fun(cn)

time.sleep(0.05)

self.btn_start.setStyleSheet(self.file_path_btn_all[0])

self.flag_hero_revive = True

def thread_1(self):

self.btn_start.setStyleSheet(self.file_path_btn_all[1])

time.sleep(1)

self.btn_start.setStyleSheet(self.file_path_btn_all[2])

time.sleep(0.5)

t_2 = threading.Thread(target=self.image_disappear)

t_2.start()

def slot_btn_start(self):

if self.flag_btn_start == True:

self.flag_btn_start = False

t_1 = threading.Thread(target=self.thread_1)

t_1.start()

elif self.flag_hero_revive == True:

self.flag_hero_revive = False

t_3 = threading.Thread(target=self.image_appear)

t_3.start()

else:

pass

def closeEvent(self, event):

reply = QMessageBox.question(self, 'Exit', 'Are you sure to exit?', QMessageBox.Yes | QMessageBox.Cancel)

if reply == QMessageBox.Yes:

event.accept()

else:

event.ignore()

def ui_main():

app = QApplication(sys.argv)

w = SnapFinger()

w.show()

sys.exit(app.exec_())

if __name__ == '__main__':

ui_main()

总结

到此这篇关于Python+PyQt5实现灭霸响指的文章就介绍到这了,更多相关python pyqt5 灭霸响指内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python偷回灭霸的宝石_Python+PyQt5实现灭霸响指功能相关推荐

  1. python偷回灭霸的宝石_Python视频处理案例:反转灭霸打响指的视频动画(源代码)!...

    <复仇者联盟4:终局之战>的宣传口号是逆转无限(to reserve infinity),在电影中,钢铁侠研究出了可以穿越时间的量子战甲,复仇者联盟人手一件,穿越时空回到过去带回了六颗无限 ...

  2. python偷回灭霸的宝石_灭霸获取无限宝石,其中一颗最让他怀疑,最残酷的是灵魂宝石?...

    哈喽,大家好.要说<复联3>中灭霸是最强的反派,应该不会有人反对吧.毕竟一上场就为我们展示了一场漫威史无前例的最大悲剧,在灭霸收集无限宝石的过程中.我们也同样看到了各位英雄们的实力与灭霸相 ...

  3. python偷回灭霸的宝石_复联4不能合理解释:钢铁侠是怎么从灭霸手中偷走无限宝石的!...

    毫不隐瞒地讲,看完<复仇者联盟4>之后,绝对有漫威粉丝对其中的一个(或几个)镜头感到困惑! 当灭霸第3次扣响无限手套时,没有任何反应,灭霸居然在这个时候才发现宝石不见了-- 更匪夷所思的是 ...

  4. python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...

    概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运 ...

  5. python 股票回测书籍推荐_python实现马丁策略回测3000只股票

    python实现马丁策略回测3000只股票 批量爬取股票数据 这里爬取数据继续使用tushare,根据股票代码来遍历,因为爬取数据需要一定时间,不妨使用多线程来爬取,这里要注意tushare规定每分钟 ...

  6. python如何设计爬虫界面软件_Python+PyQt5设计B站视频数据爬虫小程序

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python ,作者J哥 前言 目前,市场上有大量 Python图形用户界面( ...

  7. python 动态调整控件大小_python PyQt5如何让窗口控件与窗口大小同步变化?

    在下面的代码中 self.tableWidget.resize(self.width()-20,self.height()-20) self.tableWidget.move(10,20) 这两行没有 ...

  8. python股票回测源码_Python爬虫回测股票的实例讲解

    股票和基金一直是热门的话题,很多周围的人都选择不同种类的理财方式.就股票而言,肯定是短时间内收益最大化,这里我们需要用python爬虫的方法,来帮助我们获取一些股票的数据,这样才能更好的买到相应的股票 ...

  9. python二元多次函数拟合_Python实现的拟合二元一次函数功能示例【基于scipy模块】...

    本文实例讲述了Python实现的拟合二元一次函数功能.分享给大家供大家参考,具体如下: 背景: 使用scipy拟合一元二次函数. 参考: HYRY Studio-<用Python做科学计算> ...

最新文章

  1. R语言使用Repeat函数多次执行代码块内的语句,实现循环执行任务的功能:repeat没有提供任何检查条件,所以编码者必须给出退出重复循环的条件(一般使用if和break)
  2. 从算法到硬件,一文读懂2019年 AI如何演进
  3. 问题集锦(30-35)
  4. matlab如何读取未知行数,带头文件和字段名的txt文件
  5. CentOS7中Docker的安装与配置
  6. 使用flex布局把三个元素分配成两列,第二列垂直布局两个元素
  7. Lab01:Xv6 and Unix utilities
  8. 2020年考证时间表汇总!这些证书值得拥有!
  9. swing中如何将jtable中的数据导入到excel中?
  10. 并行计算(一)——初步认识
  11. Day02:requests请求库,selenium请求库
  12. SaaS应用“正益工作”发布,为大中型企业轻松构建移动门户
  13. 《数字图像处理》读书笔记:第1章 绪论
  14. R语言中5种正态性检验的方法
  15. Lebesgue可测与Borel可测
  16. 计算机课程综合实训自我鉴定,计算机教学实习的自我鉴定范文
  17. 基于无监督深度学习的单目深度和自身运动轨迹估计的深度神经模型
  18. vue注册组件template传id
  19. 当极客 (Geek) 遇到呆瓜 (Nerd)
  20. gitee团队协作使用

热门文章

  1. 家具企业如何降低管理成本
  2. 判断浏览器Version等相关参数的js脚本
  3. Android-DialogFragmen踩坑,调用dismiss后回到activity再次出现dialog的问题
  4. 【笔记】Android 使用自定义矢量图,ps文件转矢量图
  5. (四)图像的空域锐化_一阶梯度算子
  6. 2019 计蒜之道 复赛 D——“星云系统”(单调栈||队列+贪心)
  7. LCD(液晶)显示器选购注意事项
  8. 让泯灭的良知幻化成丝丝温风
  9. 照明用哪种灯比较护眼?推荐专业的护眼照明灯
  10. Python3-正则表达式~pattern.sub