PySide2在使用需要等待的情况,界面就处于一个卡死状态。

import shutil
from PySide2.QtWidgets import QApplication, QMessageBox, QTableWidgetItem
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QThread
import configparser as cp
import os
import time
from threading import Thread


class WKManagement_system_UI():
    def __init__(self):
        # 初始化加载主界面
        self.ui = QUiLoader().load('main_window---1.ui')

        # 初始化类属性
        self.config = cp.ConfigParser()
        self.read_result_data = None

        # 加载按钮触发事件
        self.ui.btn_start_measure.clicked.connect(self.start_measure)

        # 初始化日志写入功能
        self.write_log = self.input_log('程序初始化完成!')

    # 程序开始测量,负责代码组织功能
    def start_measure(self):
        self.send_request_ini()
        read_result_thread = Thread(target=self.read_result)
        read_result_thread.start()
        read_result_thread.join()
        self.show_result_data(results=self.read_result_data)
        print('主线程执行完成!', os.getpid())

    def send_request_ini(self):
        shutil.copyfile('data/request.ini', 'D:/message/request.ini')  # 将request.ini文件进行复制,如果要调整,先做调整在复制
        self.input_log('开始文件生成成功!')

    def read_result(self):
        result_path = 'D:/message/Result.ini'
        while True:
            if os.path.exists(result_path):
                time.sleep(0.1)
                self.config.read(result_path, encoding='GBK')
                length = self.config.get('测量项目', 'length')
                width = self.config.get('测量项目', 'width')
                height = self.config.get('测量项目', 'height')
                wheelbase = self.config.get('测量项目', 'wheelbase')
                self.read_result_data = (length, width, height, wheelbase)
                print('子线程执行完成!', os.getpid(), os.getppid())
                return self.read_result_data

    def show_result_data(self, results):
        self.ui.tableWidget.setItem(1, 0, QTableWidgetItem(results[0]))
        self.ui.tableWidget.setItem(1, 1, QTableWidgetItem(results[1]))
        self.ui.tableWidget.setItem(1, 2, QTableWidgetItem(results[2]))
        self.ui.tableWidget.setItem(1, 3, QTableWidgetItem(results[3]))

    def input_log(self, info):
        if os.path.exists(f"data/{time.strftime('%Y-%m-%d', time.localtime())}_info.log"):
            with open(f"data/{time.strftime('%Y-%m-%d', time.localtime())}_info.log", 'a') as log_file:
                log_file.write(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}: {info}\n")
        else:
            open(f"data/{time.strftime('%Y-%m-%d', time.localtime())}_info.log", 'w')
            with open(f"data/{time.strftime('%Y-%m-%d', time.localtime())}_info.log", 'a') as log_file:
                log_file.write(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}: {info}\n")


if __name__ == '__main__':
    app = QApplication([])
    main_wk_ui = WKManagement_system_UI()
    main_wk_ui.ui.show()
    app.exec_()

你将执行时间较长的代码用多线程执行就行了

在PySide2中 是不支持 Python 的多线程类 threading,要用到QT特有的线程类QThread;
看代码中只用到了 read_result_thread = Thread(target=self.read_result),尝试使用一下QThread