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两种遍历字典(dict)的方法比较
May 29 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
Python正规则表达式学习指南
Aug 02 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
Python读写docx文件的方法
May 08 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
python双向链表实例详解
May 25 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实现图片上传并进行替换操作
2016/03/15 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python编程羊车门问题代码示例
2017/10/25 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
党校学习思想汇报
2014/01/06 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
物业保洁员管理制度
2015/08/05 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏