在pyqt程序中,建立一个循环,在循环中等待按钮按下,按下则返回一个值,未按则等在循环里?

在pyqt程序中,建立一个循环,在循环中等待按钮按下,按下则返回一个值,未按则等在循环里?

可以使用事件循环(event loop)来等待按钮的按下事件

为什么用循环而不是在按钮的点击事件里返回嘞?

【以下回答由 GPT 生成】

在PyQt程序中,在循环中等待按钮按下并返回一个值的一个解决方案是使用Qt的信号与槽机制。您可以在按钮被按下时发射一个自定义信号并在槽函数中处理。

以下是修改后的代码示例:

import sys
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

class MySignal(QObject):
    button_pressed = pyqtSignal()

class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("Button Example")
        self.setGeometry(300, 300, 300, 200)

        self.button = QPushButton("OK", self)
        self.button.setGeometry(100, 100, 100, 50)
        self.button.clicked.connect(self.buttonClicked)

        self.mySignal = MySignal()
        self.mySignal.button_pressed.connect(self.onButtonPressed)

    def buttonClicked(self):
        self.mySignal.button_pressed.emit()

    def onButtonPressed(self):
        # 处理按钮按下后的逻辑
        # 返回需要的值
        pass

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec_())

在这个示例中,我们创建了一个自定义信号button_pressed并将它与按钮的clicked信号关联起来。当按钮被按下时,button_pressed信号会发射,然后在MyMainWindow类中的onButtonPressed槽函数中处理按钮按下后的逻辑以及返回需要的值。

请注意,这里的循环不是指Python的while循环,而是指PyQt主事件循环。通过调用app.exec_()启动主事件循环,以等待用户操作。

希望这个解决方案能对您有所帮助!如果您对代码有任何问题,请随时追问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^