esm famil
6 سال پیش توسط esm famil مطرح شد
1 پاسخ

رویداد نگه داشتن کلید کیبورد در پایتون

سلام

همونطور که میدونید توی پایتون و tkinter میشه یه رویداد رو به یه تابع متصل کرد. خب حالا من میخوام وقتی یکی از کلیدهای کیبورد (مثلا A) نگه داشته شد تابع اجرا بشه (تاکید میکنم وقتی کلید فشار و نگه داشته بشه، نه اینکه فقط زده بشه)
بطور مثال توی بازی gta وقتی کلید مربوط به بوق ماشین فشار و نگه داشته میشه صدای بوق اجرا میشه و بمحض رها کردن کلید صدا قطع میشه

توی کد زیر:
root.bind('<a>', play)
وقتی کاربر کلید A رو توی برنامه میزنه تابع پلی اجرا میشه، درصورتیکه من میخوام وقتی کاربر کلید A رو زد و نگه داشت play اجرا بشه و بمحض رها کردن کلید A اجرای play متوقف بشه، درست شبیه بوق ماشین (تابع پلی هم در واقع یه فایل موسیقی رو اجرا میکنه)

بعد اینکه اصلا توی پایتون و tkinter میشه ایونت های سفارشی و مخصوص ساخت؟ مثلا یه رویداد این باشه که کاربر 3 بار پشت سر هم کلید اینتر رو بزنه؟

ممنون میشم راهنمایی بفرمایید


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 6 سال پیش مطرح شد
3

@j1989mah

سلام. برای این کار می‌تونید از پکیج pynput استفاده کنید. برای کنترل و مدیریت رویدادهای موس و کیبورد متدهای جالبی داره.
https://pypi.org/project/pynput/

به شکل زیر میتونید از pynput.keyboard.Listener استفاده کنید.

from pynput.keyboard import Key, Listener

def on_press(key):
    print('{0} pressed'.format(
        key))

def on_release(key):
    print('{0} release'.format(
        key))
    if key == Key.esc:
        # Stop listener
        return False

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

گزینه سوم (Collect events until released) میتونه برای اجرای یه کد در حین نگه داشتن یه کلید استفاده بشه.

و در مورد سوال دومتون:
احتمالا با استفاده از def on_press بتونید ساختاری بوجود بیارید که مثلا: آخرین ۵ کلیدی رو که فشرده شدند در یه آرایه ذخیره کنه... و بعد از هر بار ذخیره یه تابع رو فراخوانی کنید که چک کنه:
"اگر ۳ گزینه آخر آرایه مثل هم هستند، اون کار خاصی رو که می‌خواهید براتون انجام بده."

موفق باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام