pyqt5:无法在QTdesigner中创建的GUI窗口运行keyPressedEvent

时间:2018-06-08 10:46:58

标签: python user-interface pyqt5 keypress

我用QT设计师制作了两个ui,我用uic.loadUi()调用了这些ui。 我想创建一个快捷方式来使用keyPressEvent退出代码,因为我的所有GUI都以全屏运行。代码将在raspberry pi中运行。 我找到了一个带有keyPressEvent的代码,但它只适用于self.show()窗口。我没有使用那个窗口,但是这个事件在我的ui窗口上不起作用。如何在用QTdesigner制作的ui窗口中运行keyPressEvent?(self.ui和self.goodsUi)

class Form(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

我想使用这两个窗口

        self.ui = uic.loadUi("ui/a.ui")
        self.goodsUi = uic.loadUi("ui/goods.ui")

        self.ui.showFullScreen()
        self.goodsUi.showFullScreen()

我想删除此窗口/我不使用它

        self.showFullScreen()
        self.resize(10, 10)

这是keypressevent,仅适用于self.show()窗口

    def keyPressEvent(self, event):
        if event.key() == Qt.Key_D:
            sys.exit(1)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Form()
    sys.exit(app.exec())

1 个答案:

答案 0 :(得分:0)

要关闭所有窗口的功能,请尝试以下操作:

def keyPressEvent(self):
    app = QtWidgets.QApplication.instance()
    app.closeAllWindows()