【问题标题】:Call function by Enter key回车键调用函数
【发布时间】:2023-04-06 14:49:02
【问题描述】:

当通过 Enter 键盘键按下 QPushButton ("click") 时,如何使 (on_click) 工作?它只与 mouse_click 交互

import sys
from PyQt5.QtWidgets import *

class Example(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        self.label = QLabel("",self)
        self.label.move(100, 100)

        self.button = QPushButton('click', self)
        self.button.move(100, 50)
        self.button.clicked.connect(self.on_click)

        self.setGeometry(500, 150, 200, 200)
        self.show()    

    def on_click(self):
        self.label.setText("Hello")

if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())

【问题讨论】:

  • 你希望on_click函数在你按下回车键的时候被调用吗?
  • 是的,有可能吗?
  • 您的标题不合适,因为没有必要与按钮交互。

标签: python python-3.x pyqt pyqt5 qkeyevent


【解决方案1】:

你必须覆盖 keyPressEvent 方法:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Example(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        self.label = QLabel("",self)
        self.label.move(100, 100)

        self.button = QPushButton('click', self)
        self.button.move(100, 50)
        self.button.clicked.connect(self.on_click)

        self.setGeometry(500, 150, 200, 200)
        self.show()    

    def on_click(self):
        self.label.setText("Hello")

    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Return:
            self.on_click()


if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 2020-12-19
    • 2014-10-12
    • 2019-11-29
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多