Python 编写强制性流氓软件, 可表白, 可其它!

来我们先看看效果:

用 Python 做了一个最近抖音上非常火的表白神器, 欢迎各位大佬指导

需求:

Python3.6

PyQT5 库

不多废话, 直接上代码:

python 学习群. png

-- coding: utf-8 --importsys

fromPyQt5importQtWidgets

fromPyQt5.QtGuiimportQFont,QIcon#QtWidgets 不包含 QFont 必须调用 QtGui

fromPyQt5importQtGui,QtCore

importrandom

classMessageBox(QtWidgets.QWidget):#继承自父类QtWidgets.QWidget

CloseAllowed=0

definit(self,parent=None):#parent=None代表此QWidget属于最上层的窗口,也就是MainWindows.

QtWidgets.QWidget.init(self)#因为继承关系,要对父类初始化

通过 super 初始化父类, init()函数无 self, 若直接 QtWidgets.QWidget.init(self), 括号里是有 self 的self.setGeometry(300,300,800,800)# setGeometry()方法完成两个功能 -- 设置窗口在屏幕上的位置和设置窗口本身的大小. 它的前两个参数是窗口在屏幕上的 x 和 y 坐标. 后两个参数是窗口本身的宽和高

#self.resize(1000, 500) # 设置窗体大小, 本行可有可无.

self.center()#自定义一个居中的函数

self.setFixedSize(self.width(),self.height());#PyQT禁止调整窗口大小和窗口最大化按钮

#self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)#PyQT 禁止窗口最大化按钮和关闭按钮

self.setWindowTitle(u'表白神器 by Python 学习群: 125240963')# 仅仅设置窗体标题, 不设置位置.

self.setWindowIcon(QIcon('rose.png'))# 调用 QIcon 构造函数时, 我们需要提供要显示的图标的路径(相对或绝对路径). 同时注意: 使用 QIcon 类型必须导入此模块 from PyQt5.QtGui import QIcon

self.setToolTip(u'Python 学习群: 125240963 获取源码')#调用setToolTip()方法,该方法接受富文本格式的参数,之类.

QtWidgets.QToolTip.setFont(QFont('华文楷体',10))#设置字体以及字体大小

self.label1=QtWidgets.QLabel(u' 小姐姐, 观察你很久了!',self)# 建立一个标签

self.label1.move(150,40)# 使此标签移动到这个部件 (260,40) 的位置

self.label1.setFont(QFont("Timers",20));#设置字体与字体大小

self.label2=QtWidgets.QLabel(u' 做我女朋友好不好?',self)# 建立一个标签

self.label2.move(150,100)# 使此标签移动到这个部件 (260,100) 的位置

self.label2.setFont(QFont("Timers",20));#设置字体与字体大小

#Qt 中提供的调色板 QPalette 类就是专门用于管理控件的外观显示. QPalette 类相当于对话框或控件的调色板, 管理着控件和窗体的所有颜色.

#每个窗体和控件都包含一个 QPalette 对象, 在显示时, 对其做相应的设置即可

self.window_pale=QtGui.QPalette()#实例化QPalette类

self.window_pale.setBrush(self.backgroundRole(),QtGui.QBrush(QtGui.QPixmap("biu.jpg")))#打开图片

self.setPalette(self.window_pale)#应用背景色

# setStyleSheet 来设置图形界面的外观

self.buttonOK=QtWidgets.QPushButton(u'同意',self)# 因为需要增加按钮, 所以我们引入了 QPushButton 类, 该按钮是 QPushButton 类的一个实例. 构造函数的第一个参数是按钮的标签. 第二个参数是父窗口小部件. 父窗口小部件是示例窗口小部件, 它是通过 QWidget 继承的

self.buttonOK.setFocusPolicy(QtCore.Qt.NoFocus)#按钮无焦点

# Qt::TabFocus 0x1 接受 Tab 键焦点

# Qt::ClickFocus 0x2 接受鼠标单击做焦点

# Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受 Tab 键和鼠标单击做焦点

# Qt::WheelFocus StrongFocus | 0x4 滑轮作为焦点选中事件

# Qt::NoFocus 0 不接受焦点

self.buttonOK.move(50,700)# move()方法来指定部件的放置坐标, 坐标的顶点就是窗口的左上角

self.buttonOK.clicked.connect(self.showDialogOK)

self.buttonE=QtWidgets.QPushButton(u'考虑考虑',self)# 因为需要增加按钮, 所以我们引入了 QPushButton 类, 该按钮是 QPushButton 类的一个实例. 构造函数的第一个参数是按钮的标签. 第二个参数是父窗口小部件. 父窗口小部件是示例窗口小部件, 它是通过 QWidget 继承的

self.buttonE.setFocusPolicy(QtCore.Qt.NoFocus)# 按钮无焦点

# Qt::TabFocus 0x1 接受 Tab 键焦点

# Qt::ClickFocus 0x2 接受鼠标单击做焦点

# Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受 Tab 键和鼠标单击做焦点

# Qt::WheelFocus StrongFocus | 0x4 滑轮作为焦点选中事件

# Qt::NoFocus 0 不接受焦点

self.buttonE.move(330,700)# move()方法来指定部件的放置坐标, 坐标的顶点就是窗口的左上角

self.buttonE.clicked.connect(self.showDialogEE)

self.buttonNO=QtWidgets.QPushButton(u'拒绝',self)# 因为需要增加按钮, 所以我们引入了 QPushButton 类, 该按钮是 QPushButton 类的一个实例. 构造函数的第一个参数是按钮的标签. 第二个参数是父窗口小部件. 父窗口小部件是示例窗口小部件, 它是通过 QWidget 继承的

self.buttonNO.setFocusPolicy(QtCore.Qt.NoFocus)# 按钮无焦点

# Qt::TabFocus 0x1 接受 Tab 键焦点

# Qt::ClickFocus 0x2 接受鼠标单击做焦点

# Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受 Tab 键和鼠标单击做焦点

# Qt::WheelFocus StrongFocus | 0x4 滑轮作为焦点选中事件

# Qt::NoFocus 0 不接受焦点

self.buttonNO.move(610,700)# move()方法来指定部件的放置坐标, 坐标的顶点就是窗口的左上角

self.buttonNO.clicked.connect(self.showDialogNO)

defshowDialogOK(self):

QtWidgets.QMessageBox.information(self,"欧耶","爱你, 么么么么么么么哒~~~",QtWidgets.QMessageBox.Ok)

self.CloseAllowed=1

defshowDialogEE(self):

QtWidgets.QMessageBox.information(self,"别纠结了","你完了, 你妈让你嫁给我",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","你爸也是这么说的",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","你奶奶也让你嫁给我",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","你哥哥也同意了, 你全家都同意",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","你闺蜜说嫁给我没错",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","你爸说不同意就打你",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","接受现实吧, 我会对你好的",QtWidgets.QMessageBox.Ok)

QtWidgets.QMessageBox.information(self,"别纠结了","你都是我的人了",QtWidgets.QMessageBox.Ok)

defshowDialogNO(self):

self.q=random.randint(0,650)# 在 0-650 内生成随机的 X 坐标

self.w=random.randint(150,650)# 在 150-650 内生成随机的 Y 坐标

self.buttonNO.move(self.q,self.w)

#enterEvent 事件 PyQt 自动运行, 无需调用

# def enterEvent(self,event):# 重写了鼠标的 enterEvent 事件, 由于继承了窗口类, 鼠标一进入主窗口便会出发此函数

# self.q=random.randint(0,650)# 在 0-650 内生成随机的 X 坐标

# self.w=random.randint(150,650)# 在 150-650 内生成随机的 Y 坐标

# self.buttonNO.move(self.q,self.w)

当我们关闭一个窗口时, 在 PyQt 中就会触发一个 QCloseEvent 的事件, 正常情况下会直接关闭这个窗口,

但是我们不希望这样的事情发生, 所以我们需要重新定义 QCloseEvent, 函数名称为 closeEvent 不可变defcloseEvent(self,event):#函数名固定不可变

ifself.CloseAllowed==1:

event.accept()#关闭窗口

else:

QtWidgets.QMessageBox.information(self,"未作回应","小姐姐, 请不要逃避!",QtWidgets.QMessageBox.Ok)

event.ignore()#忽视点击X事件

defcenter(self):

screen=QtWidgets.QDesktopWidget().screenGeometry()#获取屏幕分辨率

QtWidgets.QDesktopWidget().screenGeometry()中 QDesktopWidget()也有括号size=self.geometry()#获取窗口尺寸

self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)#利用move函数窗口居中

app=QtWidgets.QApplication(sys.argv)

window=MessageBox()

window.show()

sys.exit(app.exec_())

想要发给你自己喜欢的人, 肯定是需要打包成 exe 的呀

!/usr/bin/env python

-- coding: utf-8 --"""title ='将 calculator 项目转换为 exe 文件'author ='遂越净郝'"""

fromPyInstaller.mainimportrun

ifname=='main':

opts=['douyin.py','-w','--onefile']

#opts = ['douyin.py', '-F']

#opts = ['douyin.py', '-F', '-w']

#opts = ['douyin.py', '-F', '-w', '--icon=TargetOpinionMain.ico','--upx-dir','upx391w']

run(opts)

来源: http://www.jianshu.com/p/9389cc9e8eb4

python怎么编写流氓软件_Python 编写强制性流氓软件, 可表白, 可其它!相关推荐

  1. python中用函数编写程序_python编写程序,在程序中定义一个函数,计算1+1/2+1/3+1/4+……+1/n...

    python语言编写的程序需要运行库.Python(英语发音:/?pa?θ?n/),是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于 ...

  2. python实现商品管理系统_python编写商品管理

    # 1.实现一个商品管理的程序. # #输出1,添加商品 2.删除商品 3.查看商品 # 添加商品: # 商品的名称:xxx 商品如果已经存在的话,提示商品商品已经存在 # 商品的价格:xxxx 数量 ...

  3. python如何实现隔行_Python编写循环的两个建议 | 鹅厂实战

    作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...

  4. python画魔法阵_Python编写循环的两个建议 | 鹅厂实战!

    本文系 "Python 工匠"系列的第 7 篇文章,已取得作者授权. 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人 ...

  5. python实现单机斗地主_Python编写斗地主游戏(单机版)

    斗地主玩法介绍: 斗地主是三个人玩,两个人斗一个地主,地主20张牌.农民每人17张牌. 王炸:大王+小王 是最大牌,可以炸别人任意的牌,单张的话 大王比小王大,两者都可以代替任意牌型. 第二大是炸弹: ...

  6. 用python做一个木马_Python编写简易木马程序

    light · 2015/01/26 10:07 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Subli ...

  7. python爬虫实践目的_Python编写爬虫实践

    爬虫的基本流程 网络爬虫的基本工作流程如下: 首先选取一部分精心挑选的种子URL 将种子URL加入任务队列 从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网页 ...

  8. python数独解题器_Python编写的超帅数独可视化解题器

    数独相信大家都玩过,它被称为"聪明人的游戏",在很多人眼里: 会玩数独=高智商 为什么?因为数独能够培养观察力,提高反应力:数独的练习能够锻炼手眼脑的协调性.提高手脑并用的能力,锻 ...

  9. python压力测试模块_Python编写服务器压力测试小工具(仅供测试)

    想知道你的网站能支持多少用户一起访问吗?想知道你的网站在遭遇DDOS时能坚持多长时间嘛? 此文章只适用于Apache服务器,不适用于Nginx及其它服务器.考虑到Apache服务器的特性,一个连接对应 ...

最新文章

  1. JDK5中的控制台输入
  2. HDU2227(非降子序列的个数)
  3. 如何从ngrx store中获取Observable对象
  4. 堆(Heap)大根堆、小根堆
  5. win10 如何锁定计算机,Win10 1909 专业版怎么锁定计算机屏幕
  6. C++类的继承与多重继承的访问控制【protected,private继承方式】
  7. java pipeline 实现_Docker+Jenkins+Pipeline实现持续集成(二)java项目构建
  8. 如何在装有 macOS Monterey 的 Mac 上使用省电模式?
  9. 矩阵对应元素相乘_图网络(GNN)前传 : 图与矩阵的兄弟情结
  10. 通信原理基础知识概括
  11. 使用云函数+云调用,四步实现微信支付
  12. 春季校园招聘简历投递量已超去年同期;亚太房地产市场现逢低买入良机 | 美通企业日报...
  13. 基于网易云信WebRTC的Web音视频实现
  14. 主题美化 —— IAR篇
  15. 虚拟机服务器安装虚拟机的步骤
  16. 印象笔记粘贴HTML,【未解决】Mac中从印象笔记中拷贝图片后去VSCode中用Paste Image无法粘贴图片:There is not a image in clipboard...
  17. Method的invoke()方法的使用
  18. 并发容器J.U.C -- AQS组件(一)
  19. node.js把前台传来的base64码转成图片存放
  20. XILINX FPGA各型号差异对比

热门文章

  1. 第五章 运输层[练习题+课后习题]
  2. 深度学习推荐模型-DeepCrossing
  3. 2022-01-31的新年flag
  4. 应用Python绘制雷达图时遇到的坑
  5. 大数据分析可视化工具怎么选
  6. 移动物联卡资费标准是如何的
  7. photon 服务器操作系统,photon 云服务器
  8. mysql n叉树_MySQL索引底层:B+树详解
  9. java变量类型概念_java变量类型
  10. python换行符号长度_创建带换行符的可调整大小/多行Tkinter/ttk标签