【问题标题】:how can I create a blinking red dot using tkinter in an transperent window/surface. PS: I want to make an warning alert如何在透明窗口/表面中使用 tkinter 创建闪烁的红点。 PS:我想发出警告警报
【发布时间】:2021-06-03 08:01:25
【问题描述】:

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

import pygame
import win32api
import win32con
import win32gui
import time

RED =  (255,   0,   0)
fuchsia = (255, 0, 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), 0, 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, 20), 20)
    pygame.display.update()
    time.sleep(0.25)

【问题讨论】:

    标签: python tkinter tkinter-canvas


    【解决方案1】:

    下面是一个使用 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, 0, 40, 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。

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2013-05-14
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多