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入门教程
Apr 03 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
通过实例解析Python return运行原理
Mar 04 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
深入探讨opencv图像矫正算法实战
May 21 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 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
基于mysql的论坛(7)
2006/10/09 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
php中上传文件的的解决方案
2018/09/25 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
angularjs的select使用及默认选中设置
2017/04/08 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
python求素数示例分享
2014/02/16 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
2014年教师培训的自我评价
2014/01/03 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
大二学生自我检讨书
2014/10/23 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
对领导班子的意见和建议
2015/06/08 职场文书