首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5.QThread的start()方法不执行run()方法

PyQt5.QThread的start()方法不执行run()方法
EN

Stack Overflow用户
提问于 2018-08-07 06:48:35
回答 1查看 109关注 0票数 1

我开始学习PyQt5和Qthread,并尝试做一个简单的QThread实现,我知道这很明显,但我真的不明白为什么它不工作

我的代码:

代码语言:javascript
复制
from PyQt5 import QtCore


class WorkingThread(QtCore.QThread):
    def __init__(self):
        super().__init__()

    def run(self):
        print(" work !")


class MainWindow(QtCore.QObject):

    worker_thread = WorkingThread()

    def engage(self):
        print("calling start")
        self.worker_thread.start()


if __name__ == "__main__":
    main = MainWindow()
    main.engage()

输出:

调用start

进程已完成,退出代码为0

别说“工作!”已打印

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 08:34:34

Qt的许多元素都需要一个事件循环才能正常工作,这就是QThread的情况,因为在这种情况下没有图形用户界面它适合创建一个QCoreApplication:

代码语言:javascript
复制
from PyQt5 import QtCore


class WorkingThread(QtCore.QThread):
    def run(self):
        print(" work !")


class MainWindow(QtCore.QObject):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.worker_thread = WorkingThread()

    def engage(self):
        print("calling start")
        self.worker_thread.start()


if __name__ == "__main__":
    import sys

    app = QtCore.QCoreApplication(sys.argv)
    main = MainWindow()
    main.engage()
    sys.exit(app.exec_())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51716606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档