PYTHON da kısayol tuşu (ör: ctrl+e = programı kapat veya enter = aç) atamak için ek modül (ör: pyautogui vs.) yüklemelimiyim zaten mevcud mu?
Bir komut satırı programı için mi yoksa bir Tkinter programı için mi soruyorsunuz?
İkisi içinde öğrenmek istiyorum.
Tkinter için bir paket kurmanıza gerek yok, Tkinter’ın kendi içinde böyle bir destek mevcut. Örnekler ve ayrıntılı bilgi için şuraya bakabilirsiniz: http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
Python için Python’ın standart kütüphanesi içinde yer alan curses
modülünü kullanabilirsiniz. Klavye girişlerini algılama ile ilgili başlık için şuraya bakabilirsiniz: https://docs.python.org/3/howto/curses.html#user-input
teşekkürler yardım ettiğiniz için
yalnız hocam bir not düşmeliyim curses modülü python windows sürümlerinde standart kütüphaneyle gelmiyor(yani yüklü değil).
Merhaba, öncelikle yapmak istediğiniz şey için bir keylogger indirmelisiniz.
pip install pyxhook
Şimdi de basit bir örnek yapalım:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import time
import pyxhook
NOW = 0
CONTROL = False
def listen(event):
global NOW, CONTROL
if event.Key == "q":
hook.cancel()
elif event.Key == "c":
if CONTROL:
if time.time() - NOW > 0.1:
print("Zaman geçti.")
else:
print("Yetiştin.")
NOW = 0
CONTROL = False
elif event.Key == "Control_L":
NOW += time.time()
CONTROL = True
if __name__ == "__main__":
hook = pyxhook.HookManager()
hook.KeyUp = listen
hook.HookKeyboard()
hook.start()
Bu programı çalıştırdığınız andan itibaren klavye dinlenmeye başlanır. Yukarıdaki kodlara göre ‘q’ tuşuna basarsanız, programdan çıkarsınız. ‘ctrl’ ve ‘c’ tuşlarına hızlıca basarsanız farklı, ‘ctrl’ tuşuna bastıktan sonra biraz bekleyip ‘c’ tuşuna basarsanız farklı bir yazı ekrana yazdırılır.
ilgilendiğin için teşekkürler bir şey soracaktım bu indirdiğimiz modül klavyeyi dinliyor bizde pythonda klavyeyi dinleyen bir program yazabilirmiyiz?
cevap: Yazarız ama zaten modüllerde yazıldığı için modüller bize kolaylık sağlıyor yoksa yazamazmıyız?
Daha önce yazıldığına göre biz de yazabiliriz ancak yazılmışı varken neden yazalım? Yazılmış olanı kullanırız ki modül kavramı da bu yüzden var.
Yazabiliriz ama klavyeyi dinleyen bir programı nasıl oluşturacağımızı bilmemiz gerekiyor. Mesela bu modülün kaynak kodlarına https://github.com/JeffHoogland/pyxhook sitesinden bakabilirsiniz.
Daha önce yazıldığına göre biz yazamayabiliriz buda bir ihtimal.
şöyleki daha önce yazılan modül c ile yazılıp pythona entegre ediliyor olabilir.
Ama dediğiniz gibi pythonla yazılabiliyormuş.
Evet, öyleymiş. Ama şurada her işletim sisteminde çalışan bir curses gerçeklemesi de mevcutmuş: UniCurses · PyPI
Bu kod hata veriyor.Hata şu satırda(Windows’ta):
hook=pyxhook.HookManager()
Hatada ftnlc kütüphanesi yok diyor. İndirmeme de izin verilmiyor.
Bu hata Windows’tan kaynaklanıyor. Pyxhook unix sistemlerde çalışan bir modül.
Edit: Windows için aşağıdaki modülü kullanmayı deneyin, aşağıdaki siteden Windows’da normalde pip ile indirilmesi mümkün olmayan modüllerin whl dosyalarını indirebilirsiniz.
Pyhook için:
Pywin32
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32
Pyhook
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook
O modülü pyxhook dan önce denenmiştim. İndirirken ftnlc ile aynı hatayı veriyor
Nasıl denediniz? Bir önceki mesajımda paylaştığım linkleri kullanarak indirmeye çalıştınız mı hiç?
Bu modülü şu şekilde kuramıyoruz:
pip install pyHook
Yukarıda paylaştığım linkleri ziyaret edin, sisteminize göre uygun olan wheel dosyasını indirin ve şöyle kurmaya çalışın.
İndirilmiş dosya: pyHook-1.5.1-cp36-cp36m-win_amd64.whl
Diyelim dosya C:\Users\Kullanici_Adi\Downloads’a inmiş olsun:
pip install C:\Users\Kullanici_Adi\Downloads\pyHook-1.5.1-cp36-cp36m-win_amd64.whl
Bu platformu desteklemiyor. Anlamında bir hata verdi bu şekilde kurunca:
Hem 32 bit hem 64 bit için ve ayrıca farklı Python sürümleri için değişik wheel dosyaları var. Siz kendi sisteminize göre uygun olanı indirdiniz değil mi?
İndirmeden önce bunları dikkate aldım.
Daha önce python3.5 kurup silmiştim. Ancak pek üzerinde durmadım temizlemenin. Şu an 3.6 kullanıyorum. Bundan kaynaklı olabilir mi?
Bilmiyorum, pek sanmıyorum ama belki de olabilir. Acaba bağımlı olduğu başka bir modül mü var, yukarıda Pywin32’nin linkini de bırakmıştım. Onu da indirip kurmayı denediniz değil mi? Normalde size tarif ettiğim şekilde kurmuştum.