Skip to content

请问一下,pyqt5与asyncio结合是不是可以替代线程呢? #93

@wangyexiang

Description

@wangyexiang

如题,请问一下,
### 1. pyqt5与asyncio结合是不是可以替代线程呢?感觉线程没有协程方便呢,自己试了一下,把协程放在主线程中,界面会阻塞,应该是协程失效了吧。
代码如下:

from PyQt5.QtWidgets import  QPushButton,QVBoxLayout,QWidget,QApplication
from PyQt5.QtGui import QIcon,QPixmap

import sys
import asyncio

class WindowClass(QWidget):
    def __init__(self,parent=None):
        super(WindowClass, self).__init__(parent)
        self.btn_1=QPushButton("Btn_1")

        self.btn_1.setCheckable(True)#设置已经被点击
        self.btn_1.toggle()#切换按钮状态
        self.btn_1.clicked.connect(self.btnfunc)

        self.resize(400,300)
        layout=QVBoxLayout()
        layout.addWidget(self.btn_1)
        self.setLayout(layout)

    def btnfunc(self):
        print("start...")
        async def wait():
            await asyncio.sleep(20)
        asyncio.run(wait())
        print("end...")

if __name__=="__main__":
    app=QApplication(sys.argv)
    win=WindowClass()
    win.show()
    sys.exit(app.exec_())

### 2.另外,自己在网上查了一下,就查到一个 quamash框架是协程和pyqt结合的,有没有其他的框架呢?是不是协程要在pyqt5种运行,要自己进行封装?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions