from PIL import Image
import time
import subprocess
for i in bio:
p = subprocess.Popen(["C:\Program Files\IrfanView\i_view64.exe",'C:\\Users\Moondra\\Bioteck_charts\{}.png'.format(i)])
time.sleep(5)
p.kill()
これは私の現在のコードです。 私はWindows 7を使用しています。リストを繰り返していますが、各要素については、画像を開いてから5秒後に閉じています。しかし、私が長い間画像を勉強してから、中断した箇所からループを再開したい場合は、このループを一時停止することができます。「スペースバー」を押してループを一時停止します。ループを再開するにはもう一度押してください(更新を参照)
Psudo-コードはこのようなものです:
from PIL import Image
import time
import subprocess
for i in bio:
p = subprocess.Popen(["C:\Program Files\IrfanView\i_view64.exe",'C:\\Users\Moondra\\Bioteck_charts\{}.png'.format(i)])
time.sleep(5)
if Keypress == 'Spacebar':
pause
if Keypress =="Spacebar": resume
p.kill()
私は、これら二つのスレッドを見ましたが、1つは、(ユーザー入力の)9歳以上であるとの両方が、私は本当に慣れていないよスレッドを(使用して複雑なようですと)。
ユーザ入力:
How to get user input during a while loop without blocking
ループを一時停止:
Python - using [spacebar] to pause for loop
は私が望むものを行うにはきれいな方法はありますか?
EDIT:msvcrt
from msvcrt import getch
while True:
key = ord(getch())
print(key)
if key == 27: #ESC
break
を使用して
テストはジャスト出力255(何度も)ように思われます。 esc
を押すと、反応やループが壊れません。 印刷された番号(255)は、別のキーを押しても変化しません。
UPDATE:
私はそれを別の方法をしようとしています。これが良いのかどうかは分かりませんが、私はと呼ばれるモジュールがkeypresses入力を認識していることを発見しました。 私はそうするためにスレッドを使用しようとしていますが、スレッドを正しく処理するタイミングが得られていないようです。私の問題は、私のスレッドでtime.sleep()が呼び出されたとき、私のキー押下は読み込まれないということです。スレッド輸入スレッド 輸入キーボード 輸入サブプロセス 輸入漬物から
あなたはKeyPressイベントではない入力を()を検出するために探している
def keyboard_press():
while p == True:
if keyboard.is_pressed('down') == True:
print('yes')
input()
p.kill()
#continue
with open('C:\\Users\Moondra\\Bioteck.pickle', 'rb') as file:
bio = pickle.load(file)
for i in bio[:5]:
p = subprocess.Popen(["C:\Program Files\IrfanView\i_view64.exe",'C:\\Users\Moondra\\Bioteck_charts\{}.png'.format(i)])
from threading import Thread
t = Thread(target = keyboard_press, args =())
t.start()
t.join()
time.sleep(3)
p.kill()
感謝を見てみましょう。 OPを更新します。私はペーストされたリンクで受け入れられた答えを見た。私はWindows 7を使用するので、私はtermiosを使用できないようですか? – Moondra
あなたは傾けることはできませんが、msftと同様の回答がありますhttps://stackoverflow.com/questions/12175964/python-method-for-reading-keypress – pypypy
ありがとうございます。 msvcrtはキーの押下を検出していないようです。私はmsvcrtへの私の試みと私が得ている応答で私のOPを更新しました。私が間違っているかもしれない何か? – Moondra