You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5中如何显示自定义QLabel并激活对应QShortcut快捷键

问题修复方案

原代码存在3个核心问题导致功能不生效:

  • 两个自定义标签组件创建后没有加入主窗口的布局,界面上无法显示
  • 组件实例是__init__方法内的局部变量,方法执行完后会被Python垃圾回收,导致快捷键绑定失效
  • 快捷键触发的弹窗内容写死,无法对应不同标签的快捷键提示

修改后完整代码
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt

class Create_workingDict(QWidget):
    def __init__(self, lblname, lblscut):
        super().__init__()
        self.lblname = lblname
        self.lblscut = lblscut

        lbl_1 = QLabel()
        lbl_1.setText(self.lblname)
        lbl_2 = QLabel()
        lbl_2.setText(f"快捷键:{self.lblscut}")

        vbox = QVBoxLayout()
        vbox.addWidget(lbl_1)
        vbox.addWidget(lbl_2)
        self.setLayout(vbox)

        # 绑定快捷键,设置上下文为窗口级快捷键,主窗口激活时即可触发
        self.msgSc = QShortcut(QKeySequence(self.lblscut), self)
        self.msgSc.setContext(Qt.WindowShortcut)
        self.msgSc.activated.connect(self.show_tip)
    
    def show_tip(self):
        QMessageBox.information(self, '提示', f'已触发【{self.lblname}】功能,绑定快捷键:{self.lblscut}')


class Mainclass(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Sample Window")
        self.resize(300, 200)

        # 实例化自定义标签,绑定为实例属性避免被回收
        self.account_widget = Create_workingDict("Accounts", "Alt+A")
        self.inventory_widget = Create_workingDict("Inventory", "Ctrl+B")

        # 给主窗口加布局,把两个自定义标签加进去
        main_layout = QVBoxLayout()
        main_layout.addWidget(self.account_widget)
        main_layout.addWidget(self.inventory_widget)
        self.setLayout(main_layout)


def main():
    app = QApplication(sys.argv)
    ex = Mainclass()
    ex.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

关键修改说明
  • 主窗口新增垂直布局,将两个自定义标签组件添加到布局中,启动后即可正常显示两个标签的文本内容
  • 将自定义标签的实例绑定为Mainclass的实例属性,避免局部变量生命周期结束后被回收,保证快捷键持续有效
  • 把快捷键的触发逻辑抽成单独的类方法,弹窗内容动态读取当前标签的名称和绑定快捷键,不再写死固定提示
  • 给快捷键设置Qt.WindowShortcut上下文,只要主窗口处于激活状态,不管焦点在哪个子组件上,都能正常触发对应快捷键
  • 优化了快捷键标签的显示文本,直接展示当前标签绑定的快捷键,交互更清晰

内容的提问来源于stack exchange,提问作者tckraomuqnt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:24:18