0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

python ひな形

Last updated at Posted at 2022-02-18

スレッド、引数、キー入力(opencv2)


import threading
import time
import sys
import cv2

class MyThread(threading.Thread):
  def __init__(self, val): #インスタンス化メソッド
    self.mode = val #名前をつける
    
  def run(self):
    img1 = cv2.imread("img.jpg")

    # サイズをそろえる
    window_size = (400,400)
    img = cv2.resize(img1, window_size)

    # 画像を表示
    while True:
        cv2.imshow("img",img) # ウィンドウ開かないとキー入力できない
        if cv2.waitKey(1) == ord('q'):
            break
        time.sleep(1)
    
    cv2.destroyAllWindows()

def mainloop():
    t = MyThread(1)
    t.start() 
    
if __name__ == "__main__":

    args = sys.argv
    if 2 > len(args):
        print("usage : python3 ***.py ")
        exit(1)
            
    dummy = args[1]
    mainloop()
    exit(1)

global

調べてみたら、pythonのglobal宣言は、そのスコープの中においてaをglobal変数として扱う、ということらしい。つまり、fooのローカルスコープから参照したときにaはローカルスコープから探し出される。
よって、foo内でaを参照したければ、foo内でもglobal宣言してあげる必要があるってこと。

pynput

X がいるので SSHとかターミナルでは使えない。


# sample2.py
from pynput import keyboard  # ターミナルでは使えない
import time
import sys
def press(key):
    global exitcnt 
    try:
        print('アルファベット {0} が押されました'.format(key.char))
        exitcnt = exitcnt + 1
    except AttributeError:
        exitcnt = exitcnt + 1
        print('スペシャルキー {0} が押されました'.format(key))

# def release(key):
#     print('{0} が離されました'.format(key))
#     if key == keyboard.Key.esc:     # escが押された場合
#         return False    # listenerを止める

if __name__ == "__main__":

    # listener = keyboard.Listener(
    #     on_press=press,
    #     on_release=release)

    listener = keyboard.Listener(on_press=press)
    listener.start()
    global exitcnt 
    exitcnt = 0
    for i in range(30):
        time.sleep(1)
        if(exitcnt >= 1):
            exit(1)
        print("." + str(exitcnt))
    exit(1)

ターミナルでも有効なキー判定方法

https://www.ishikawasekkei.com/index.php/2019/10/21/python-programing-inkey/
pip install blessed


# https://www.ishikawasekkei.com/index.php/2019/10/21/python-programing-inkey/
#pip install blessed

from blessed import Terminal

t = Terminal()
with t.cbreak():
    while True:
        k = t.inkey(timeout=0.001)
        if not k :
            pass
        elif k.is_sequence:
            if k.name == 'KEY_ESCAPE':
                break
            print(f'"{k.name}"が押されました。終了するには「ESC」キーを押してください。')
        else:
            print(f'"{k}"が押されました。終了するには「ESC」キーを押してください。')

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?