等待触发

Wait for a trigger

我正在编写一个 PyQt 应用程序,它需要在加载主 window 之前获得一些输入。我已经设置了以下class(最小化):

class MyInput(QWidget):
    def __init__(self):
        super(MyInput, self).__init__()
        self.thing = False

        mybutton = QPushButton('Press me', self)
        mybutton.clicked.connect(self.set_data)

    def set_data(self):
        self.hide()
        self.destroyLater()
        self.thing = True

    def get_thing(self):
        self.show()
        return self.thing

后来,我有这个功能:

def ask_thing():
    mi = MyInput()
    return mi.get_thing()

现在,当我调用 ask_thing() 时,我希望 mi.get_thing() 在 return 值之前等待按钮被按下(或者 return False 如果它已关闭)。但是,self.show() 似乎单独 运行 并让代码继续执行,命中 return 语句并离开函数。

如何等待输入?

也许你必须考虑从 QWidget 更改为 QDialog。然后将函数 show 更改为 exec_,这将执行等待用户交互的小部件。