Qt第二十八章:异步
所有的数据处理都应该通过异步进行
- 定义信号
# 自定义信号源 class QCustomSignal(QObject): signal_update_table = Signal(list) signal_get_token = Signal(str) signal_send_mq = Signal()
- 处理函数
@Slot() def handle_search(self): def thread_function(): user_info = get_user_info(token=self.token, username=self.lineEdit.text()) # 发出信号 custom_signal.signal_update_table.emit(user_info) # 异步访问API并发出渲染信号 Thread(target=thread_function).start() # 绑定信号的处理函数 custom_signal.signal_update_table.connect(self.handle_search_render)
- 渲染函数
@Slot(list) def handle_search_render(self, user_info): self.user_info = user_info # QTableWidget句柄 widget: QTableWidget = self.tableWidget # 设置行数 widget.setRowCount(len(user_info)) # 设置列数 widget.setColumnCount(5) # 设置表头 widget.setHorizontalHeaderLabels(["姓名", "组织", "手机号码", "操作", "检测"]) # 设置表头宽度自适应 widget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) widget.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed) widget.horizontalHeader().setSectionResizeMode(2, QHeaderView.Fixed) widget.horizontalHeader().setSectionResizeMode(3, QHeaderView.Fixed) widget.horizontalHeader().setSectionResizeMode(4, QHeaderView.Fixed)