希望您对我正在努力克服的问题提出意见和支持。这将是完成我正在建设的一个小项目的最后一块拼图。它基于OCR。我正在从实时屏幕读取文本(使用下面的 python 脚本)并能够将结果记录到文件中。但是,只有在我使用 alt+tab 使 python 控制台窗口(脚本在其中打印输出)处于活动状态/通过键盘聚焦时,才会记录输出。
但是这样做会停止我正在阅读文本的软件,从而破坏了整个过程。将窗口切换到软件的前面是脚本目的失败。
因此,在从其他用户那里搜索关于始终将 python 控制台窗口保持在顶部的代码后,我添加了代码,无论软件在做什么。我无法将此 python 控制台窗口保留在此 sw 屏幕的顶部。SW 将所有屏幕用于其工作目的。
有没有替代方案?无论屏幕上有什么,我怎样才能让 python 控制台成为任何其他窗口的顶部?如果不是这个,请提出一个替代方案。
import numpy as nm
from datetime import datetime
import pytesseract
import cv2
import PIL
from PIL import ImageGrab
import win32gui, win32process, win32con
import os
hwnd = win32gui.GetForegroundWindow()
win32gui.SetWindowPos(hwnd,win32con.HWND_TOPMOST,0,0,100,300,0)
#Define function for OCR to enable on multiple screens.
def imToString():
# Path of tesseract executable
pytesseract.pytesseract.tesseract_cmd ='C:\\Tesseract-OCR\\tesseract.exe'
while(True):
# ImageGrab-To capture the screen image in a loop.
# Bbox used to capture a specific area.
#screen base
cap1 = PIL.ImageGrab.grab(bbox =(0, 917, 1913, 1065), include_layered_windows=False, all_screens=True)
date = datetime.now().strftime("%Y-%m-%d %I:%M:%S")
#str config - OCR Engine settings for ONLY text based capture.
config1 = ('-l eng --oem 2 --psm 6')
#configuring tesseract engine for OCR
tess1 = pytesseract.image_to_string(
cv2.cvtColor(nm.array(cap1), cv2.COLOR_BGR2GRAY),
config=config1)
#Defining log pattern to generate
a = [ date, " State: ", tess1 ]
#writing logging output to file
file1 = open("C:\\Users\\User\\Desktop\\rev2.log", "a", encoding='UTF8')
file1.writelines(a)
file1.writelines("\n")
file1.close()
#OUTPUT on colse for Logging verification
print (date, "State: ", tess1)
# Calling the function
imToString()
根据要求,我不允许在操作屏幕时使用键盘。我对python相当陌生,并且一直在看到类似的解决方案并将其添加到脚本中以制定适当的解决方案。
请指教。