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 相关文章推荐
Windows下安装python2.7及科学计算套装
Mar 05 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
Python button选取本地图片并显示的实例
Jun 13 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
Python pandas库中的isnull()详解
Dec 26 Python
python deque模块简单使用代码实例
Mar 12 Python
用Python将库打包发布到pypi
Apr 13 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
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
PHP基础知识回顾
2012/08/16 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
Javascript 作用域使用说明
2009/08/13 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
北京某公司的.net笔试题
2014/03/20 面试题
2015年党员自评材料
2014/12/17 职场文书
北京故宫的导游词
2015/01/31 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
初中军训感言
2015/08/01 职场文书
停车场管理制度范本
2015/08/05 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python