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
Bunu daha kolay bir hale getirmeye çalışıyordum ama bir sorunla karşılaştım. Bu Signal'i bir sözlükten çekmeye çalışınca Signal unbound'da kalıyor bound olmuyor. Onun için de:
Böyle hata alıyorum. Kod böyle:
Bu Signal neden unbound'da kalıyor, nasıl bound'a geçiririm? Bu yanıt vermiyor hatasının daha kolay/alternatif bir çözümü var mıdır, varsa nedir? Yardımcı olursanız sevinirim.
Bu şekilde bir şey yaptım, oldu ama daha kolay bir yöntem vardır belki.
QShortcut
kullanamazdım (yanlış da düşünüyor olabilirim, belirtin yanlışsa). Bu yüzdende keyboard modülü ile yapmayı denedim ama direkt add_hotkey
ile kısayol ekleyince yanıt vermiyor alıyordum add_hotkeyi
pyqtsignale
bağlayarak çözdüm. Kod bu şekildeydi:
Python:
class KeyBoardManager(QObject):
ctrlk = pyqtsignal()
def start(self):
add_hotkey("ctrl+k", self.ctrlk.emit, suppress=True)
class window(QMainWindow):
def __init__(self):
super().__init__()
manager = KeyBoardManager(self)
manager.ctrlk.connect(lambda :self.islem())
manager.start()
Bunu daha kolay bir hale getirmeye çalışıyordum ama bir sorunla karşılaştım. Bu Signal'i bir sözlükten çekmeye çalışınca Signal unbound'da kalıyor bound olmuyor. Onun için de:
AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'
Böyle hata alıyorum. Kod böyle:
Python:
class KeyBoardManager(QObject):
hotkeys = {}
signals = {}
def add_hotkey(self,hotkey, callback, args=(), suppress=False, timeout=1, trigger_on_release=False):
self.signals[hotkey] = pyqtSignal()
self.signals[hotkey].connect(callback)
self.hotkeys[hotkey] = {
"callback":self.signals[hotkey].emit,"args":args,"suppress":suppress,"timeout":timeout,trigger_on_release:False
}
def start(self):
for h,j in self.hotkeys:
add_hotkey(h,j["callback"],args=j["args"],suppress=j["subpress"],timeout=j["timeout"],trigger_on_release=j["trigger_on_release"])
Bu Signal neden unbound'da kalıyor, nasıl bound'a geçiririm? Bu yanıt vermiyor hatasının daha kolay/alternatif bir çözümü var mıdır, varsa nedir? Yardımcı olursanız sevinirim.
Python:
class Hotkey(QObject):
signal = pyqtSignal()
def __init__(self, hotkey, callback, args=(), suppress=False, timeout=1, trigger_on_release=False):
super().__init__()
self.callback = callback
add_hotkey(hotkey, self.signal.emit, args=args, suppress=suppress, timeout=timeout,
trigger_on_release=trigger_on_release)
class KeyboardManager(QObject):
hotkeys = {}
def add_hotkey(self, hotkey, callback, args=(), suppress=False, timeout=1, trigger_on_release=False):
self.hotkeys[hotkey] = Hotkey(hotkey, callback, args=args, suppress=suppress, timeout=timeout,
trigger_on_release=trigger_on_release)
def start(self):
for hk in self.hotkeys.values():
hk.signal.connect(hk.callback)
Bu şekilde bir şey yaptım, oldu ama daha kolay bir yöntem vardır belki.
Son düzenleyen: Moderatör: