社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

抖音表白程序Python版,明人不说暗话,我喜欢你

python • 7 年前 • 898 次点击  

最近一直在被抖音视频的表白程序刷屏,之前小编也收到过一个VB编写一个表白程序


网上也流传过很多类似的表白程序,但是基本上都是由VB或者易语言编写的。

难道我大Python不能写出这样的程序来么?


人生苦短,我用Python,难道是开玩笑的?!肯定是可以编写出来的!


效果图:



如果你要点击关闭的话,是关不掉的哟


如果点击考虑考虑的话


主要用到的是pyqt5

素材是一张800*800的表情包

完整代码


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


import sys
from PyQt5 import QtWidgets
from PyQt5.QtGui import QFont,QIcon#QtWidgets不包含QFont必须调用QtGui
from PyQt5 import QtGui,QtCore
import random

class MessageBox(QtWidgets.QWidget):#继承自父类QtWidgets.QWidget
    CloseAllowed=0
    def __init__(self,parent = None):#parent = None代表此QWidget属于最上层的窗口,也就是MainWindows.
        QtWidgets.QWidget.__init__(self)#因为继承关系,要对父类初始化
#通过super初始化父类,__init__()函数无self,若直接QtWidgets.QWidget.__init__(self),括号里是有self的
        self.setGeometry(300300800,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()方法,该方法接受富文本格式的参数,css之类。
        QtWidgets.QToolTip.setFont(QFont('华文楷体'10))#设置字体以及字体大小
        self.label1 = QtWidgets.QLabel(u'小姐姐,观察你很久了!', self)  # 建立一个标签
        self.label1.move(15040)  # 使此标签移动到这个部件(260,40)的位置
        self.label1.setFont(QFont("Timers"20));#设置字体与字体大小
        self.label2= QtWidgets.QLabel(u'做我女朋友好不好?', self)  # 建立一个标签
        self.label2.move(150100)  # 使此标签移动到这个部件(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(50700)  # 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(330700)  # 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(610700)  # move()方法来指定部件的放置坐标,坐标的顶点就是窗口的左上角
        self.buttonNO.clicked.connect(self.showDialogNO)




    def showDialogOK(self):
        QtWidgets.QMessageBox.information(self, "欧耶""爱你,么么么么么么么哒~~~", QtWidgets.QMessageBox.Ok)
        self.CloseAllowed = 1

    def showDialogEE(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)

    def showDialogNO (self):
        self.q = random.randint(0650)  # 在0-650内生成随机的X坐标
        self.w = random.randint(150650)  # 在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不可变
    def closeEvent(self,event):#函数名固定不可变

        if self.CloseAllowed==1:
            event.accept()#关闭窗口
        else:
            QtWidgets.QMessageBox.information(self, "未作回应""小姐姐,请不要逃避!", QtWidgets.QMessageBox.Ok)
            event.ignore()#忽视点击X事件
    def center(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__ = '遂越净郝'
"""

from PyInstaller.__main__ import run

if __name__ == '__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)


所以你准备好了么!


本文作者:遂越净郝

源自:

https://zhuanlan.zhihu.com/p/38284396



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/XNbVxHDE8O
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/20669
 
898 次点击