【问题标题】:PyQt application and infinite loopPyQt 应用程序和无限循环
【发布时间】:2017-06-24 11:38:11
【问题描述】:
def main():
    app = QtGui.QApplication(sys.argv)

    gui = GUIClass()
    gui.showUI()

    app.exec_()

    while True:
        if win32api.GetAsyncKeyState(win32con.VK_SHIFT):
            print(True)

if __name__ == '__main__':
    main()

app.exec_() 之后的代码没有运行。如何进行无限循环并运行我的 PyQt 应用程序?

谢谢。

【问题讨论】:

  • app.exec() 是一个阻塞调用。只有在您退出 gui 后,它才会解锁并开始运行后编码。
  • @Pratham,哦!我不能用正在运行的应用程序进行无限循环?
  • “mdurant”给出的答案是你应该做的。我无法理解您所说的“正在运行的应用程序的无限循环”是什么意思..
  • @Pratham,我只是创建线程并将循环(while)放入它。谢谢。

标签: python pyqt pyqt4


【解决方案1】:

pyqt 带有自己的(无限)事件循环,因此您不必构建自己的。 app.exec_() 进入这个循环,这就是为什么你看不到执行之后的代码。只有在您关闭所有 qt 窗口后,才会执行剩余的任何内容。

QTimer 使用示例:

main() 之前exec_()

def timout():
    if win32api.GetAsyncKeyState(win32con.VK_SHIFT):
        print(True)

timer = QtCore.QTimer(self)
timer.timeout.connect(timeout)
timer.start(100)

【讨论】:

  • 嗯。我不能用正在运行的应用程序进行无限循环?
  • 您可以在主应用程序运行时运行其他东西,但通常这些是通过槽机制对事件的响应;您可以在 GUI 运行时使用 QTimer 重复运行任意代码。如果这些都没有意义,那么你应该去 pyqt4 教程/示例。
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 2023-03-29
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多