微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在透明窗口/表面中使用 tkinter 创建一个闪烁的红点 PS:我要发出警告警报

如何解决如何在透明窗口/表面中使用 tkinter 创建一个闪烁的红点 PS:我要发出警告警报

我使用 Pygame 和 win32api 创建了一个透明窗口,里面有一个红点。请帮助我使用我认为会更好的 Tkinter 进行复制。

import pygame
import win32api
import win32con
import win32gui
import time

RED =  (255,0)
fuchsia = (255,128)  # Transparency color
size =(width,height) = (40,40)

pygame.init()
screen = pygame.display.set_mode(size,pygame.NOFRAME) # borderless,use pygame.NOFRAME
# Create layered window
hwnd = pygame.display.get_wm_info()["window"]
win32gui.SetwindowLong(hwnd,win32con.GWL_EXSTYLE,win32gui.getwindowlong(hwnd,win32con.GWL_EXSTYLE) | win32con.WS_EX_layered)
# Set window transparency color
win32gui.SetlayeredWindowAttributes(hwnd,win32api.RGB(*fuchsia),win32con.LWA_COLORKEY)

while True:
    screen.fill(fuchsia)  # Transparent background
    pygame.display.update()
    pygame.draw.circle(screen,RED,(20,20),20)
    pygame.display.update()
    time.sleep(0.25)
    pygame.draw.circle(screen,fuchsia,20)
    pygame.display.update()
    time.sleep(0.25)

解决方法

下面是一个使用 tkinter 的简单示例:

import tkinter as tk

TRANS_COLOR = "white"

root = tk.Tk()
root.overrideredirect(True) # borderless window
root.geometry("-10+10") # top-right corner
root.attributes("-transparentcolor",TRANS_COLOR) # set transparent color
root.attributes("-topmost",1) # make it on top of other windows

canvas = tk.Canvas(root,width=40,height=40,bg=TRANS_COLOR,highlightthickness=0)
canvas.pack()

dot = canvas.create_oval(0,40,outline='')

def blinking_dot(i=0):
    colors = (TRANS_COLOR,"red")
    canvas.itemconfigure(dot,fill=colors[i])
    root.after(250,blinking_dot,1-i)

blinking_dot() # start blinking dot
root.mainloop()

请注意,它适用于 Windows。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。