我正在使用pygame加载图像(Count.png,只是一个灰色背景png文件)作为当前在屏幕上显示的任何内容的叠加计数器。在此过程中,如果我让图像突然停止加载5分钟(在坐标300x300处未显示),程序就会继续运行,这意味着与计数器相关的动作仍在继续。在这种情况下,只需按一下e即可。如何正确“关闭”图像以便重新打开图像或防止图像消失(不确定图像发生了什么,它显示在任务栏上,并且动作仍每隔x秒运行一次)?
您将看到的是计数器仅在保存为Count.png的任何图像上递减计数。这从一个简单的tkinter按钮开始。该按钮将启动自动化过程并启动该计数器。当计数器达到0时,该过程将重新开始,其中应包括计数器。我用按钮写出了除tkinter窗口以外的所有部分。 icon.ico文件正是它所声明的内容,所以我没有在任务栏上看到漂亮的羽毛,而是将实际的图标绑定到了应用程序。
import os
from ctypes import windll
import pygame
import time
import pyautogui
def countingRoutine():
locx = 300
locy = 300
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (locx, locy)
pygame.init()
set_window_pos = windll.user32.SetWindowPos
screen = pygame.display.set_mode((50, 30), pygame.NOFRAME)
set_window_pos(pygame.display.get_wm_info()['window'], -1, locx, locy, 0, 0,
0x0001)
clock = pygame.time.Clock()
counter, text = 13, '00'.ljust(4)
pygame.time.set_timer(pygame.USEREVENT, 1000)
font = pygame.font.SysFont('Avatar', 23)
while True:
for e in pygame.event.get():
if e.type == pygame.USEREVENT:
if counter > 0:
counter -= 1
text = str(counter).center(0).rjust(4)
else:
main()
screen.fill((255, 191, 0))
for_trans = pygame.image.load_extended('Count.png')
loadImg = pygame.image.load_basic('icon.ico')
pygame.display.set_icon(loadImg)
screen.blit(for_trans, (0, -15))
screen.blit(font.render(text, True, (200, 0, 200)), (0, 0))
pygame.display.flip()
clock.tick(counter)
continue
def msgBox():
pyautogui.confirm("Enabling Automated process\n ", "Activating", buttons=
['Affirmative'])
def main():
while True:
pyautogui.hotkey('e')
countingRoutine()
time.sleep(13)
if __name__ == "__main__":
msgBox()
main()