Pycharm制作搞怪弹窗的实现代码


Posted in Python onFebruary 19, 2021

闲来无聊用python制作了一个搞怪的桌面弹窗程序,惊喜连连哦

运行动图

Pycharm制作搞怪弹窗的实现代码

实现代码:

import tkinter as tk
import tkinter.font as tkFont # 引入字体模块
import time
import sys
import pygame
import random
import threading
import win32api
import wmi
from tkinter.messagebox import*

#播放音频
path = "mp3/暗恋.mp3"#一开始的音乐,替换成你的地址
pygame.mixer.init()
pygame.mixer.music.load(path)
pygame.mixer.music.play()

#设置样式
WINWIDTH = 800#窗体宽度
WINHEIGHT = 600#窗体高度
WINX = 400#弹窗横坐标
WINY = 100#弹窗纵坐标
img_x = 250#设置图片横坐标
img_y = 100#设置图片纵坐标
question_x = 250#设置问题横坐标
question_y = 60#设置问题纵坐标
button_width = 100#设置按钮宽度
button_height = 40#设置按钮高度
button_y = 520#按钮纵坐标
yes_button_x = img_x - button_width // 2#确定按钮横坐标
no_button_x = WINWIDTH - img_x - button_width//2#否定按钮横坐标

#显示文本
global text
global title
question = "question?"
yes = "OK"
no = "Wait"
title = "I need money"

#播放音频
def Start_music():
  path = "mp3/殿堂.mp3"#点击ok按钮后播放的音频,这里替换成你的音频文件地址
  pygame.mixer.init()
  pygame.mixer.music.load(path)
  pygame.mixer.music.play()


#调整屏幕亮度
def ScreenChange() -> object:
  SCREEN = wmi.WMI(namespace='root\WMI')
  a = SCREEN.WmiMonitorBrightnessMethods()[0]
  a.WmiSetBrightness(Brightness=100, Timeout=500)


#调整Windows音量
def changeVd():
  WM_APPCOMMAND = 0x319
  APPCOMMAND_VOLUME_MAX = 0x0a
  APPCOMMAND_VOLUME_MIN = 0x09
  # 音量最大
  win32api.PostMessage(-1, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_MAX * 0x10000)
  # 音量最小
  #win32api.PostMessage(-1, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_MIN * 0x10000)


#弹窗炸弹
def dow():
  window = tk.Tk()
  width = window.winfo_screenwidth()
  height = window.winfo_screenheight()
  a = random.randrange(0, width)
  b = random.randrange(0, height)
  window.title(title)
  window.geometry("300x50" + "+" + str(a) + "+" + str(b))
  tk.Label(window,
       text=text, # 标签的文字
       # bg='white', # 背景颜色
       font=('楷体', 17), # 字体和字体大小
       width=15, height=2 # 标签长宽
       ).pack() # 固定窗口位置
  window.mainloop()


#触发弹窗炸弹
def open_start():
  threads = []
  for i in range(50): # 需要的弹框数量
    t = threading.Thread(target=dow)
    t.setDaemon(True)
    threads.append(t)
    time.sleep(0.1)
    threads[i].start()


# 新建无法直接关闭的TK类
class NewTk(tk.Tk):
  #重写“X”按钮
  def destroy(self):
    root = tk.Tk()
    root.withdraw()
    for i in range(3):
      if i == 0:
        showinfo(title="title1", message="question1")
      if i == 1:
        showinfo(title="title2", message="question2")
      if i == 2:
        showinfo(title="title3", message="question3")
        global text
        text = "title"
        global title
        title = "text"
        open_start()

#主程序体
thread = threading.Thread(target=changeVd)
thread.setDaemon(True)
thread.start()
ScreenChange()
win = NewTk()
win.title(title)
win.geometry("%sx%s+%s+%s" % (WINWIDTH, WINHEIGHT, WINX, WINY))#样式设置
win.resizable(0, 0)#阻止窗口大小化

photo = tk.PhotoImage(file="lib/没钱了.gif")#这里替换成你的图片地址
imgLabel = tk.Label(win, image=photo)#将图片添加至窗口
imgLabel.place(x=img_x, y=img_y)#设置图片位置

question_text = tkFont.Font(size=20, weight=tkFont.BOLD)
q = tk.Label(win, text=question, font=question_text)
q.place(x=question_x, y=question_y)

#OK按钮点击事件
def click_yes():
  Start_music()
  root = tk.Tk()
  root.withdraw()
  for i in range(5):
    if i == 0:
      showinfo(title="title1", message="text1")
    if i == 1:
      showinfo(title="title2", message="text2")
    if i == 2:
      showinfo(title="title3", message="text3")
      global text
      text = "text"
      global title
      title = "title"
      open_start()
    if i == 3:
      print("运行退出程序")
      sys.exit(0)

yes_button = tk.Button(win, text=yes, command=click_yes)
yes_button.place(x=yes_button_x, y=button_y, width=button_width, height=button_height)

no_button = tk.Button(win, text=no)
no_button.place(x=no_button_x, y=button_y, width=button_width, height=button_height)

#NO按钮触碰事件
def mouse_in_no_click(event):
  bx, by = random.randint(button_width, WINWIDTH-button_width), random.randint(button_height, WINHEIGHT-button_height)
  no_button.place(x=bx, y=by)

no_button.bind("<Motion>", mouse_in_no_click)
win.mainloop()

学会了吗,快去试一试吧,将文本和图片替换掉又能制造更多的惊喜呦

到此这篇关于Pycharm制作搞怪弹窗的实现代码的文章就介绍到这了,更多相关Pycharm制作弹窗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
python入门教程之识别验证码
Mar 04 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Python函数和模块的使用总结
May 20 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
django序列化serializers过程解析
Dec 14 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
在 Python 中利用 Pool 进行多线程
Apr 24 Python
python 高阶函数简单介绍
Feb 19 #Python
如何用Matlab和Python读取Netcdf文件
Feb 19 #Python
python中最小二乘法详细讲解
Feb 19 #Python
python中scipy.stats产生随机数实例讲解
Feb 19 #Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 #Python
python+opencv实现车道线检测
Feb 19 #Python
python UIAutomator2使用超详细教程
Feb 19 #Python
You might like
sony ICF-2010 拆解与改装
2021/03/02 无线电
PHP 高级课程笔记 面向对象
2009/06/21 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
javascript动态加载二
2012/08/22 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
React组件refs的使用详解
2018/02/09 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
python绘图方法实例入门
2015/05/19 Python
Python实现两款计算器功能示例
2017/12/19 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python代码区分大小写吗
2020/06/17 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
岗位职责的定义
2013/11/10 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL