简体   繁体   English

如何在 Pyqt5 中激活按键事件?

[英]How to activate Key Press Event, in Pyqt5?

Here is my Code.这是我的代码。 I want to capture a pressed key and print it.我想捕获一个按下的键并打印它。 But Nothing will Happen, How to resolve it?但是什么都不会发生,如何解决? I Have two classes.我有两节课。 One is Create_Instance and another one is Main_Window.一个是 Create_Instance,另一个是 Main_Window。 In My code, I have Only Lable items to display.在我的代码中,我只有 Lable 项目要显示。 How to activate it?如何激活它?

Edited已编辑

import sys
from PyQt5.QtWidgets import *

class Create_Instance(QWidget):
    def __init__(self,dict_item):
        super().__init__()

        self.dict_items = dict_item
        self.lbl = QLabel("This is My Label")
        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.lbl)
        self.setLayout(self.vbox)

    def keyPressEvent(self, event):
        print(event)
        print(self.dict_items)

class Main_Window(QWidget):
    def __init__(self):
        super(). __init__()
        self.setWindowTitle("Main Window")
        self.layout_main = QHBoxLayout()

        self.firstmenu_container = Create_Instance(dict_item="1")
        self.secondmenu_container = Create_Instance(dict_item="2")
        self.layout_main.addWidget(self.firstmenu_container)
        self.layout_main.addWidget(self.secondmenu_container)

        self.setLayout(self.layout_main)

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

if __name__ == '__main__':
    main()

You must add the widget to the layout:您必须将小部件添加到布局中:

def __init__(self):
    super().__init__()
    self.setWindowTitle("Main Window")
    self.layout_main = QHBoxLayout()

    self.firstmenu_container = Create_Instance(dict_item="1")
    self.layout_main.addWidget(self.firstmenu_container)
    self.secondmenu_container = Create_Instance(dict_item="2")
    self.layout_main.addWidget(self.secondmenu_container)

    self.setLayout(self.layout_main)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM