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 元组(Tuple)操作详解
Mar 11 Python
Python简单日志处理类分享
Feb 14 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Pandas标记删除重复记录的方法
Apr 08 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
Python 多线程处理任务实例
Nov 07 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数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
Python合并字符串的3种方法
2015/05/21 Python
python文件名和文件路径操作实例
2017/09/29 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
婚庆公司的创业计划书
2014/01/22 职场文书
审计主管岗位职责
2014/01/31 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
献爱心活动总结
2014/05/07 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
软件售后服务方案
2014/05/29 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python
Python find()、rfind()方法及作用
2022/12/24 Python