測試了3個熱鍵庫,最終systemhotkey庫使用最簡單,安裝方法
簡易的demo,搬運官方
from system_hotkey import systemhotkey
hk = systemhotkey()
hk.register(('control', 'shift', 'h'), callback=lambda x: print("easy!"))
準備乙個pyqt訊號,和乙個熱鍵訊號
sig_keyhot = pyqtsignal(str)
self.hk_start = systemhotkey()
繫結熱鍵訊號到pyqt訊號
self.hk_start.register(('control','1'),callback=lambda x:self.send_key_event("start"))
def send_key_event(self,i_str):
self.sig_keyhot.emit(i_str)
繫結pyqt訊號和pyqt槽
self.sig_keyhot.connect(self.mkey_pressevent)
至此流程閉環
demo
from system_hotkey import systemhotkey
from pyqt5.qtcore import qobject,pyqtsignal
#這裡之所以繼承qobject是因為要使用自定義訊號(pyqt5要求)
class
c_demo
(qwidget,qobject)
:#定義乙個熱鍵訊號
sig_keyhot = pyqtsignal(
str)
def__init__
(self,from)
:#1. 簡單的繪製乙個視窗
super()
.__init__(from)
from.resize(
100,
150)
#2. 設定我們的自定義熱鍵響應函式
self.sig_keyhot.connect(self.mkey_pressevent)
#3. 初始化兩個熱鍵
self.hk_start,self.hk_stop = systemhotkey(
),systemhotkey(
)#4. 繫結快捷鍵和對應的訊號傳送函式
self.hk_start.register(
('control'
,'1'
),callback=
lambda x:self.send_key_event(
"start"))
self.hk_stop.register(
('control'
,'2'
), callback=
lambda x: self.send_key_event(
"stop"))
#熱鍵處理函式
defmkey_pressevent
(self,i_str)
:print
("按下的按鍵是%s"
%(i_str,))
#熱鍵訊號傳送函式(將外部訊號,轉化成qt訊號)
defsend_key_event
(self,i_str)
: self.sig_keyhot.emit(i_str)
if __name__ ==
"__main__"
:import sys
dialog_main = qdialog(
) ui = c_demo(dialog_main)
dialog_main.show())
)
執行截圖
搜尋packageindex 到python的package庫
搜尋想找的功能,比如這個熱鍵,搜尋hotkey
檢視簡介和demo就能找到需要的包
很多部落格貼上複製出來的demo寫的著實令人迷惑,別在這個上邊浪費很多時間,找到合適的輪子,官網demo還是準,還能檢查版本是否匹配
pyqt5切換python版本 pyqt5介面切換
主要的思路就是建立兩個frame 如果有兩個以上同理 使用setvisible 函式顯示或者隱藏frame 引數是bool值 import sys from pyqt5.qtwidgets import from pyqt5.qtcore import from pyqt5.qtgui import...
學習PyQt5(三) PyQt5的訊號和槽
我 如圖所示,我們建立乙個按鈕及乙個瀏覽器。什麼是訊號?比如按鈕的單擊,雙擊,按下,釋放等,都可以認為是乙個訊號 什麼是槽?對應的訊號,做出什麼應對,這要乙個應對在乙個函式中,我們可以認為這就是乙個訊號 槽關係 在qt designer中點選工具欄 注意不是工具盒 中的這個圖示 點選這個圖示後,就進...
pyqt5多執行緒優化 PyQt5多執行緒
您不應該向主檢視傳送乙個新的小部件 qlabel 因為它將是乙個新標籤,而不是原始標籤,您應該傳送str型別的文字class thread qthread changepixmap pyqtsignal qpixmap changelabel pyqtsignal str def run self ...