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 转向 Go语言有人给出了 9 大理由
Oct 20 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Python BS4库的安装与使用详解
Aug 08 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
python快速排序的实现及运行时间比较
Nov 22 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
python实现人工蜂群算法
Sep 18 Python
Django xadmin安装及使用详解
Oct 26 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
Django实现翻页的示例代码
May 24 Python
python图像处理 PIL Image操作实例
Apr 09 Python
PyTorch中permute的使用方法
Apr 26 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP云打印类完整示例
2016/10/15 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
让python在hadoop上跑起来
2016/01/27 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
Linux机考试题
2015/07/17 面试题
会计实习期自我鉴定
2013/10/06 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
化妆品促销活动总结
2015/05/07 职场文书
数学复习课教学反思
2016/02/18 职场文书
golang中的空接口使用详解
2021/03/30 Python
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript