Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyQt5将异步数据添加到QTableView_Python_Pyqt5_Python Asyncio - Fatal编程技术网

Python 使用PyQt5将异步数据添加到QTableView

Python 使用PyQt5将异步数据添加到QTableView,python,pyqt5,python-asyncio,Python,Pyqt5,Python Asyncio,我想将异步数据添加到QTableView,而不阻塞和显示回退文本,如加载。。。在单元格中检索数据时 我想知道PyQt5是否有可能 这就是我目前所拥有的,显然它不起作用: 导入异步 随机输入 导入字符串 导入系统 从PyQt5导入QtCore、QtGui、QtWidgets 从PyQt5.QtCore导入Qt 类别项目: @财产 def名称自我: return.joinrandom.choicestring.ascii_字母的范围为10 异步def从apiself获取数据: 等待asyncio.s

我想将异步数据添加到QTableView,而不阻塞和显示回退文本,如加载。。。在单元格中检索数据时

我想知道PyQt5是否有可能

这就是我目前所拥有的,显然它不起作用:

导入异步 随机输入 导入字符串 导入系统 从PyQt5导入QtCore、QtGui、QtWidgets 从PyQt5.QtCore导入Qt 类别项目: @财产 def名称自我: return.joinrandom.choicestring.ascii_字母的范围为10 异步def从apiself获取数据: 等待asyncio.sleep5 回盲 类TableModelQtCore.QAbstractTableModel: 定义初始自我,数据: superTableModel,self.\u init__ self.\u data=数据 def dataself、索引、角色: 如果角色==Qt.DisplayRole: 返回self.\u数据[index.row][index.column] def rowCountself,索引: 返回lenself.\u数据 def columnCountself,索引: 返回lenself.\u数据[0] 类MainWindowQtWidgets.QMainWindow: 定义初始自我: 超级__ self.table=qtwidts.QTableView 项目1=项目 项目2=项目 项目3=项目 项目4=项目 数据=[ [item1.name,item1.get_data_from_slow_api], [item2.name,item2.get_data_from_slow_api], [item3.name,item3.get\u data\u from\u slow\u api], [item4.name,item4.get\u data\u from\u slow\u api], ] self.model=TableModeldata self.table.setModelself.model self.setCentralWidgetself.table 如果uuuu name uuuuu==\uuuuuuuu main\uuuuuuuu: app=qtwidts.QApplicationsys.argv 窗口=主窗口 橱窗秀 app.exec_
默认情况下,Qt不支持asyncio,但有些库实现了将其作为asyncqt或qasync启用的逻辑。考虑到上述情况,还必须重写允许更新项的setData方法,并实现更新所有信息的方法。考虑到上述情况,解决方案是:

导入异步 随机输入 导入字符串 导入系统 从PyQt5导入QtCore、QtGui、QtWidgets 从asyncqt导入QEventLoop 从qasync导入QEventLoop 类别项目: @财产 def名称自我: return.joinrandom.choicestring.ascii_字母的范围为10 异步def从apiself获取数据: 等待asyncio.sleep5 回盲 类TableModelQtCore.QAbstractTableModel: def u_init__self,数据=无: superTableModel,self.\u init__ 如果数据为无: 数据=[] self.\u data=数据 def dataself,index,role=QtCore.Qt.DisplayRole: 如果 角色==QtCore.Qt.DisplayRole
默认情况下,Qt不支持asyncio,但是有一些库实现了将其作为asyncqt或qasync启用的逻辑。考虑到上述情况,还必须重写允许更新项的setData方法,并实现更新所有信息的方法。考虑到上述情况,解决方案是:

导入异步 随机输入 导入字符串 导入系统 从PyQt5导入QtCore、QtGui、QtWidgets 从asyncqt导入QEventLoop 从qasync导入QEventLoop 类别项目: @财产 def名称自我: return.joinrandom.choicestring.ascii_字母的范围为10 异步def从apiself获取数据: 等待asyncio.sleep5 回盲 类TableModelQtCore.QAbstractTableModel: def u_init__self,数据=无: superTableModel,self.\u init__ 如果数据为无: 数据=[] self.\u data=数据 def dataself,index,role=QtCore.Qt.DisplayRole: 如果 角色==QtCore.Qt.DisplayRole
您知道如何使用表中文本以外的内容吗?我尝试放置QCheckBox和QIcon,但它没有输出任何内容,我没有错误。您知道是否有方法可以避免在运行update_行时阻塞窗口?@0lan 1问题是您的模型没有实现与图标和复选框相关的角色。这个问题是不可能的,所以我不会继续回答这个问题。2我的代码是否生成了锁,或者您是否修改了我的代码?我已经测试了我的代码,我没有发现这个问题。你知道如何使用表中文本以外的内容吗?我尝试放置QCheckBox和QIcon,但它没有输出任何内容,我没有错误。您知道是否有方法可以避免在运行update_行时阻塞窗口?@0lan 1问题是您的模型没有实现与图标和复选框相关的角色。这个问题是不可能的,所以我不会继续回答这个问题。2我的代码是否生成了锁,或者您是否修改了我的代码?我已经测试了我的代码,我没有发现这个问题。