歡迎光臨
每天分享高質量文章

抖音表白程式Python版,明人不說暗話,我喜歡你

最近一直在被抖音影片的表白程式刷屏,之前小編也收到過一個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

贊(0)

分享創造快樂