In this PyQt5 tutorial, I want to revisit the topic “How to assign keyboard shortcuts” in more detail and with few more examples.

Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn



Source Code:

<span class="token keyword">import</span> sys
<span class="token keyword">from</span> PyQt5<span class="token punctuation">.</span>QtCore <span class="token keyword">import</span> Qt
<span class="token keyword">from</span> PyQt5<span class="token punctuation">.</span>QtGui <span class="token keyword">import</span> QKeySequence
<span class="token keyword">from</span> PyQt5<span class="token punctuation">.</span>QtWidgets <span class="token keyword">import</span> QWidget<span class="token punctuation">,</span> QShortcut<span class="token punctuation">,</span> QLabel<span class="token punctuation">,</span> QApplication


<span class="token keyword">class</span> <span class="token class-name">AppDemo</span><span class="token punctuation">(</span>QWidget<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token builtin">super</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>__init__<span class="token punctuation">(</span><span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>resize<span class="token punctuation">(</span><span class="token number">1200</span><span class="token punctuation">,</span> <span class="token number">800</span><span class="token punctuation">)</span>
        
        self<span class="token punctuation">.</span>display <span class="token operator">=</span> QLabel<span class="token punctuation">(</span><span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>display<span class="token punctuation">.</span>setAlignment<span class="token punctuation">(</span>Qt<span class="token punctuation">.</span>AlignCenter<span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>display<span class="token punctuation">.</span>setGeometry<span class="token punctuation">(</span><span class="token number">1550</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">,</span> <span class="token number">600</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">)</span>     
        self<span class="token punctuation">.</span>display<span class="token punctuation">.</span>setStyleSheet<span class="token punctuation">(</span><span class="token string">'font-size: 60px'</span><span class="token punctuation">)</span>

        <span class="token comment"># basic shortcut</span>
        self<span class="token punctuation">.</span>shortcut <span class="token operator">=</span> QShortcut<span class="token punctuation">(</span>QKeySequence<span class="token punctuation">(</span><span class="token string">'Ctrl+O'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> self<span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>activated<span class="token punctuation">.</span>connect<span class="token punctuation">(</span><span class="token keyword">lambda</span> shortcut_key<span class="token operator">=</span>self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>key<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>toString<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> self<span class="token punctuation">.</span>displayKeys<span class="token punctuation">(</span>shortcut_key<span class="token punctuation">)</span><span class="token punctuation">)</span>

        <span class="token comment"># standard shortcut</span>
        self<span class="token punctuation">.</span>shortcut <span class="token operator">=</span> QShortcut<span class="token punctuation">(</span>QKeySequence<span class="token punctuation">.</span>Forward<span class="token punctuation">,</span> self<span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>activated<span class="token punctuation">.</span>connect<span class="token punctuation">(</span><span class="token keyword">lambda</span> shortcut_key<span class="token operator">=</span>self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>key<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>toString<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> self<span class="token punctuation">.</span>displayKeys<span class="token punctuation">(</span>shortcut_key<span class="token punctuation">)</span><span class="token punctuation">)</span>

        <span class="token comment"># Special Keys assignment</span>
        self<span class="token punctuation">.</span>shortcut <span class="token operator">=</span> QShortcut<span class="token punctuation">(</span>QKeySequence<span class="token punctuation">(</span><span class="token string">'Ctrl+Shift+T'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> self<span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>activated<span class="token punctuation">.</span>connect<span class="token punctuation">(</span><span class="token keyword">lambda</span> shortcut_key<span class="token operator">=</span>self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>key<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>toString<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> self<span class="token punctuation">.</span>displayKeys<span class="token punctuation">(</span>shortcut_key<span class="token punctuation">)</span><span class="token punctuation">)</span>      

        <span class="token comment">#  key sequence order</span>
        self<span class="token punctuation">.</span>shortcut <span class="token operator">=</span> QShortcut<span class="token punctuation">(</span>QKeySequence<span class="token punctuation">(</span><span class="token string">'Ctrl+Space+Shift'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> self<span class="token punctuation">)</span> <span class="token comment"># won't work</span>
        self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>activated<span class="token punctuation">.</span>connect<span class="token punctuation">(</span><span class="token keyword">lambda</span> shortcut_key<span class="token operator">=</span>self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>key<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>toString<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> self<span class="token punctuation">.</span>displayKeys<span class="token punctuation">(</span>shortcut_key<span class="token punctuation">)</span><span class="token punctuation">)</span>      
        
        self<span class="token punctuation">.</span>shortcut <span class="token operator">=</span> QShortcut<span class="token punctuation">(</span>QKeySequence<span class="token punctuation">(</span><span class="token string">'Ctrl+Shift+Space'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> self<span class="token punctuation">)</span> <span class="token comment"># will work</span>
        self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>activated<span class="token punctuation">.</span>connect<span class="token punctuation">(</span><span class="token keyword">lambda</span> shortcut_key<span class="token operator">=</span>self<span class="token punctuation">.</span>shortcut<span class="token punctuation">.</span>key<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>toString<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> self<span class="token punctuation">.</span>displayKeys<span class="token punctuation">(</span>shortcut_key<span class="token punctuation">)</span><span class="token punctuation">)</span>      

    <span class="token keyword">def</span> <span class="token function">displayKeys</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> mapping<span class="token punctuation">)</span><span class="token punctuation">:</span>
        self<span class="token punctuation">.</span>display<span class="token punctuation">.</span>setText<span class="token punctuation">(</span>mapping<span class="token punctuation">)</span>
        self<span class="token punctuation">.</span>display<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span>

<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    app <span class="token operator">=</span> QApplication<span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">)</span>

    demo <span class="token operator">=</span> AppDemo<span class="token punctuation">(</span><span class="token punctuation">)</span>
    demo<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span>
    
    sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span>app<span class="token punctuation">.</span>exec_<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>