import asyncio import logging import os import re import sys import time from typing import TextIO import queue # sys.path.append(os.path.dirname(__file__)) # 必须要把 ui 目录添加到系统路径,否则子目录文件 ui_MainWindows.py 无法 import 资源文件 sys.path.append(os.path.join(os.path.dirname(__file__), 'ui')) import threading from PySide2.QtWidgets import QApplication, QMainWindow from PySide2.QtUiTools import QUiLoader from PySide2.QtWidgets import * from PySide2.QtCore import * from PySide2 import QtCore from PySide2.QtGui import QTextCursor from ui.ui_MainWindows import Ui_MainWindow # from ui.log import Ui_Form from ui.ui_TimingAnalyze import Ui_TimingWindow from main_windows import MainWindow class Stream2(TextIO): def __init__(self,sig): super().__init__() self.newText = sig def write(self, __s) -> int: self.newText.emit(__s) # self. # return super().write(__s) app = None mainWindows:MainWindow = None sub_thread = None exit_flag = False def run_forever(GUI): global app,mainWindows QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts) app = QApplication(sys.argv) mainWindows = MainWindow(GUI) mainWindows.sig.connect(handle_signal) # TODO test mainWindows.GUI.Elaborate("ela", True) app.exec_() def run_in_thread(GUI:QObject): global sub_thread sub_thread = threading.Thread(target=run_forever, args=(GUI,)) sub_thread.setDaemon(True) sub_thread.start() time.sleep(0.01) return sub_thread def signale(dat): mainWindows.sig.emit(dat) def handle_signal(dat): # print('dat:', dat) if isinstance(dat, str): dat = dat.lower() if dat == 'start': mainWindows.show() elif dat == 'stop': mainWindows.hide() elif dat == 'exit': mainWindows.dc_shell_thread.quit() mainWindows.dc_shell_thread.wait(5) mainWindows.close() else: mainWindows.sub_win.sig.emit(dat) def StopGui(): return mainWindows.hide() def StartGui(): return mainWindows.show() def exit(): signale('exit') sub_thread.join() if __name__ == '__main__': run_forever(1) # sys.stdout = Stream() # sys.stdout.newText.connect(stderr_) # print('ok')