drucken Ich habe den folgenden Code, der mir Druck und erhält Tastatureingabe zur gleichen Zeit läßt:Python Eingabe gelöscht werden, wenn ein anderer Thread Anrufe
import time
from threading import Thread
def InpThread():
while True:
response = input("Type in here\r\n")
print("Response is " + response)
tinp = Thread(target=InpThread)
tinp.start()
while True:
time.sleep(1)
print("Printing")
ich dies zu einem einfachen Fall abgestreift habe nach unten, meinem Fall hat andere Sachen, aber das Problem ist für mich mit diesem Beispiel reproduzierbar. Letzte Woche hatte ich keine Probleme mit der Rückgabe von input() und gab mir alle bis dahin eingegebenen Zeichen. Nun, es scheint, jeder Aufruf von print() in dem anderen Thread löscht alle Zeichen weg, so dass ich meistens mit einer leeren Eingabe übrig bleibe, es sei denn ich zeitlich richtig und bin sehr schnell.
Printing
aPrinting
b
Response is b
Type in here
Printing
Ich benutze Python-Interpreter 3.5.2.
Ich kann keine Änderung in meinem Code in der letzten Woche sehen, alles, was ich denken kann, ist, dass Windows aktualisiert hat, oder vielleicht das Python-Modul.
Wie kann ich alle Eingaben behalten und nicht durch einen Aufruf zum Drucken gelöscht werden()?
redest du über den Druck 'Drucken'? Denn ohne die letzte while-Schleife scheint der Code gut zu funktionieren! –
Wo es heißt "Antwort ist b" sollte es sagen "Antwort ist ab", weil ich sowohl a und b gedrückt habe, aber a wurde durch den Druck gelöscht. Ich habe jetzt erkannt, dass es erwähnenswert ist, dass ich dies von PyCharm aus führe, und ein separates Konsolenfenster scheint vielleicht zu anderen Ergebnissen zu führen. –
Ich habe jetzt festgestellt, dass es definitiv etwas mit der PyCharm-Konsole zu tun hat. –