【问题标题】:pyqt5: Can't run keyPressedEvent at GUI Window that made in QTdesignerpyqt5:无法在 QT 设计器中制作的 GUI 窗口中运行 keyPress 事件
【发布时间】:2018-06-08 19:57:03
【问题描述】:

我用 QT 设计器做了两个 ui,我用 uic.loadUi() 调用了这些 ui。 我想使用 keyPressEvent 创建一个退出代码的快捷方式,因为我所有的 GUI 都以全屏方式运行。代码将在树莓派中运行。 我找到了一个带有 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)

这是仅在 self.show()window 中有效的按键事件

    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())

【问题讨论】:

  • 或者有没有其他方法可以添加类似快捷方式的代码来关闭所有窗口?请回答。谢谢!

标签: python user-interface pyqt5 keypress


【解决方案1】:

要关闭所有窗口的功能,试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2017-04-30
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多