| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import os
- import sys
- import time
- # sys.path.append(os.path.dirname(__file__))
- # 必须要把 ui 目录添加到系统路径,否则子目录文件 ui_MainWindows.py 无法 import 资源文件
- sys.path.append(os.path.join(os.path.dirname(__file__), 'ui'))
- sys.path.append(os.path.join(os.path.dirname(__file__), 'test_u'))
- import threading
- from PySide2.QtWidgets import QApplication
- from PySide2.QtCore import QObject,Signal
- from PySide2 import QtCore
- from main_windows import MainWindow
- # 兼容4K屏幕
- QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
- QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
- app = None
- mainWindows:MainWindow = None
- GUI_instan = None
- sub_thread = None
- exit_flag = False
- class Application(QApplication):
- sig = Signal(object)
- def __init__(self, argv):
- super().__init__(argv)
- def run_forever(GUI):
- global app,mainWindows,GUI_instan
- QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
- app = Application(sys.argv)
- mainWindows = MainWindow(GUI)
- mainWindows.sig.connect(handle_signal)
- # GUI.Elaborate("top", True)
- GUI_instan = GUI
- 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()
- # 需等待线程启动成功,否则会丢失 _GUI 打印的版本信息
- time.sleep(0.05)
- return sub_thread
- def signale(dat):
- mainWindows.sig.emit(dat)
- def handle_signal(dat):
- if isinstance(dat, str):
- dat = dat.lower()
- sig_call = {'start':mainWindows.show, 'stop':mainWindows.hide, 'exit':mainWindows.close,
- 'busy': mainWindows.busy,
- "ready": mainWindows.ready,
- "stage": mainWindows.stage,
- "message": mainWindows.show_message,
- }
- call = sig_call.get(dat)
- if call:
- call()
- 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)
-
|