Python bir uygulama yaptım uygulamanın arayüzünde start stop diye düğmeler var adından da anlaşılacağı üzere işlemi başlatıp durduruyor bunu kısayolla da yapılabilmesini istedim. Bu işlem başlayınca durdur kısayoluna/düğmesine basılmadıkça devam edeceği için QShortcut kullanamazdım (Yanlışta düşünüyor olabilirim lütfen belirtin yanlışsa). Bu yüzdende keyboard modülü ile yapmayı denedim ama direk add_hotkey ile kısayol ekleyince yanıt vermiyor alıyordum add_hotkeyipyqtsignale bağlayarak çözdüm. Kod bu şekildeydi:
Bunu daha kolay bir hale getirmeye çalışıyordum ama bir sorunla karşılaştım bu signali bir sözlükten çekmeye çalışınca signal unboundda kalıyor bound olmuyor onun içinde
AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'
Bu signal neden unbound da kalıyor, nasıl bounda geçirim, veya bu yanıt vermiyor hatasının daha kolay/alternatif bir çözümü var mıdır varsa nedir yardımcı olursanız sevinirim.
Normal bir sinyal/mailbox senkronizasyon objesi olarak dusunmussunuz. Bu cok guzel bir dusunce, fakat Qt icin fazla ileri seviye kaliyor. Qt biraz magic (sihir; yazilmayan kod, ayni buyuyu calismamis insanlarin anlamayacagi acayip sozler) uzerine kurulu oldugu icin signal objelerini class seviyesinde istiyormus: python 3.x - PyQt5 - Signal : pyqtSignal no method connect - Stack Overflow
Bu durumda tek bir sinyal kullanip hotkey’i vs. parametre olarak gondermek daha mantikli duruyor.
(to) bind. Sahsen Turkce’de “bind etmek” veya “baglamak” seklinde kullaniyorum. Connect ile esanlamli aslinda, veya biraz daha siki bir baglanti.
Burada tek bir sinyal butun callback’lere baglanmiyor mu? Nasil calisiyor?
Hayır hocam for döngüsü ile hotkey sınıflarına erişiyorum bu hotkey sınfındaki sinyali yine bu hotkey sınıfındaki callbacke bağlıyorum soneada bir sonraki sınıfa geçiyor.
out of your constructor but inside your class declaration.
hotkeyler thread gibi davranıyorsa böyle bir sorun yaşıyor olabilirsiniz.
Söylediğim gibi kodu denemedim. Sadece tahmin. Gelen key sözlük dışı kalıyorsa belki onları ayrıca filtrelemek de gerekebilir.
Dökümantasyonunda hata veya farklı değer döndürme durumlarını kontrol etmek gerekebilir.
Tabi şu kısımında göz önünde bulundurun:
This might not be at all what you are looking for, but it worked for me. I switched back to old-style signals anyways because I haven’t found a way in new-style signals to have an undefined number or type of parameters.
Yeni stil signal ve eski stil signal ler tanımlanmamış numaralar da döndürebiliyor muş.
Bunların hepsi şu an teori. Kodu denemeden bu kadar oldu. Kusuruma bakma artık.
Hiç iki hotkey deneme fırsatım olmadı belki haklısınızdır şuanda deneyemen yarın akşam deneyip mesaj atarım. Ama aynı sınıfın kopyalarındaki aynı sinyal olduğu için tek sinyale bağlancağını düşünmüyorum.