Как отключить буферизованный вывод при использовании pyauto gui (или любого другого автотипера)? - PullRequest
0 голосов
/ 09 июля 2020

Надеюсь, вы поможете мне с этой досадной проблемой.

Я создаю инструмент для автоматического ввода текста в приложении терминала, используя модуль PyAuto GUI, который позволяет мне имитировать набор текста с клавиатуры. Я создал окно только с одной кнопкой, которая выполняет operation(). Это абсолютно сработало бы для меня, за исключением того, что вывод явно буферизуется. Я уже пробовал то, что нашел в этом сообщении, а также другие обходные пути, которые я нашел, но ничего не помогло.

from tkinter import *
import tkinter as tk
import win32com.client as comclient
import time
import pyautogui as p

def wait(sec):
    time.sleep(sec)

def operation():
    shell = comclient.Dispatch("WScript.Shell")
    shell.AppActivate("Notepad")
    p.write("1234", interval=1)
    p.press("ENTER")
    wait(2)
    p.typewrite("5678", interval=1)


mainWindow = tk.Tk()
mainWindow.title("First window")
mainWindow.geometry("600x600")
label = Label(main, text="First test")
label.pack()
startButton = Button(main, text="Start test", command=operation)
startButton.pack()

tk.mainloop()

Приведенный выше код очень простой, и он должен набрать 1234 с указанным интервалом между каждой клавишей, нажмите ввод, подождите 2 секунд, а затем введите 5678 с тем же интервалом. Вместо этого он ждет 2 секунд плюс все суммированные интервалы, а затем печатает все одновременно без каких-либо интервалов. Поскольку предполагается, что он вводится в приложение, управляемое с клавиатуры, этот буферизованный вывод не будет работать, потому что у него должна быть задержка, чтобы нажать клавишу ввода для перехода на следующую страницу приложения. Я видел некоторые решения flush = True и flu sh (), но они не работают с PyAuto GUI s write(), и поэтому я открыт для другого модуля или действительно любого решения, не связанного с PyAuto GUI, если он действительно набирает с ожидаемым поведением. Я использую Python 3.8.4 на Windows 10 с VSCode Кто-нибудь раньше сталкивался с такой или подобной ситуацией? Есть ли другой способ диасблирования этого буферизованного вывода?

...