dataCreatingGUI/bin/GUIWindows.py

153 lines
3.8 KiB
Python
Raw Normal View History

2024-02-11 11:38:52 +00:00
# -*- coding:utf-8 -*-
import os
import sys
2024-02-12 09:24:19 +00:00
import fileDataCreating
import global_var
2024-02-12 09:24:19 +00:00
2024-02-11 11:38:52 +00:00
from pathlib import Path
from PySide6.QtUiTools import loadUiType
2024-02-13 04:02:22 +00:00
from PySide6.QtCore import Slot,Signal,QThread,QObject,QEventLoop,QTimer
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCursor
2024-02-13 04:02:22 +00:00
# 声明全局变量
global_var._init()
2024-02-11 11:38:52 +00:00
# 定义公共路径
path = Path(__file__)
ui_file_patch = path.parent.parent / "ui" / "ui_main.ui"
2024-02-11 11:38:52 +00:00
# 从文件中加载UI定义
formType, baseType = loadUiType(str(ui_file_patch))
2024-02-13 04:02:22 +00:00
# 重定向输出
class EmittingStr(QObject):
2024-02-13 07:47:53 +00:00
# 定义信号
textWritten = Signal(str)
# 将控制台的内容输出到QTextBrowser
2024-02-13 04:02:22 +00:00
def write(self, text):
2024-02-13 07:47:53 +00:00
# 调用 emit方法 发信号时,传入参数 必须是这里指定的 参数类型
2024-02-13 04:02:22 +00:00
self.textWritten.emit(str(text))
loop = QEventLoop()
QTimer.singleShot(100, loop.quit)
loop.exec_()
QApplication.processEvents()
# 处理文件的线程
class FileThread(QThread):
2024-02-12 09:24:19 +00:00
def __init__(self, parent=None):
super().__init__(parent=parent)
2024-02-13 04:02:22 +00:00
# 覆盖原来run去调用文件造数据脚本
2024-02-12 09:24:19 +00:00
def run(self):
fileDataCreating.main()
2024-02-11 11:38:52 +00:00
2024-02-13 04:02:22 +00:00
# GUI的主程序
2024-02-11 11:38:52 +00:00
class Window(formType, baseType):
def __init__(self):
super(Window, self).__init__()
self.setupUi(self)
2024-02-12 09:24:19 +00:00
self.setup_thread()
2024-02-13 07:47:53 +00:00
# QTextBrowser输出设置限制条数为100
self.Log_Output.document().setMaximumBlockCount(100)
self.Log_Output.ensureCursorVisible()
2024-02-13 07:47:53 +00:00
# 将控制台输出重定向到QTextBrowser
2024-02-13 04:02:22 +00:00
sys.stdout = EmittingStr()
sys.stdout.textWritten.connect(self.outputWritten)
2024-02-13 07:47:53 +00:00
# 输出到GUI信号处理函数
def outputWritten(self, text):
cursor = self.Log_Output.textCursor()
cursor.movePosition(QTextCursor.End)
cursor.insertText(text)
self.Log_Output.setTextCursor(cursor)
self.Log_Output.ensureCursorVisible()
2024-02-12 09:24:19 +00:00
@Slot() #声明槽函数
def start(self):
2024-02-13 04:02:22 +00:00
print('点击了开始按钮')
2024-02-11 14:06:23 +00:00
# 输入框参数校验
num = self.tabWidget.currentIndex()
if num == 0:
self.check_file_input()
else:
self.conntest()
# 开始运行
if num == 0:
2024-02-12 09:24:19 +00:00
self.start_thread()
2024-02-11 14:06:23 +00:00
else:
self.start_run_db()
2024-02-12 14:28:36 +00:00
# 按钮置灰
2024-02-13 04:06:59 +00:00
self.startButton.setEnabled(False)
2024-02-12 14:28:36 +00:00
2024-02-12 09:24:19 +00:00
@Slot()
def stop(self):
2024-02-13 04:02:22 +00:00
print('点击了停止按钮')
2024-02-11 14:06:23 +00:00
num = self.tabWidget.currentIndex()
if num == 0:
self.stop_run_file()
else:
self.stop_run_db()
2024-02-12 14:28:36 +00:00
# 按钮恢复
2024-02-13 04:06:59 +00:00
# self.startButton.isEnabled() 获取按钮的状态
self.startButton.setEnabled(True)
2024-02-12 09:24:19 +00:00
@Slot()
def conntest(self):
2024-02-13 04:02:22 +00:00
print('点击了测试连接按钮')
2024-02-11 14:06:23 +00:00
self.check_db_input()
# TODO(MH):校验连接信息
2024-02-13 04:02:22 +00:00
print('数据库连接成功')
2024-02-11 14:06:23 +00:00
2024-02-12 09:24:19 +00:00
def setup_thread(self):
self.thread = FileThread()
global_var.set_value('start_flag',True)
self.thread_running = global_var.get_value('start_flag')
2024-02-12 09:24:19 +00:00
def start_thread(self):
if self.thread_running:
self.thread.start()
else:
self.setup_thread()
self.thread.start()
2024-02-12 09:24:19 +00:00
2024-02-11 14:06:23 +00:00
def check_file_input(self):
2024-02-13 04:02:22 +00:00
print('文件参数校验通过')
2024-02-11 14:06:23 +00:00
def check_db_input(self):
2024-02-13 04:02:22 +00:00
print('数据库参数校验通过,开始连接数据库测试。。。')
2024-02-11 14:06:23 +00:00
def start_run_file(self):
2024-02-12 09:24:19 +00:00
# 调用文件处理脚本
2024-02-13 04:02:22 +00:00
print('开始生成文件。。。')
2024-02-12 09:24:19 +00:00
2024-02-11 14:06:23 +00:00
def start_run_db(self):
pass
def stop_run_file(self):
2024-02-12 14:28:36 +00:00
# 终止线程的事件循环
global_var.set_value('start_flag',False)
2024-02-12 14:28:36 +00:00
self.thread.quit()
# 标记线程停止
self.thread_running = global_var.get_value('start_flag')
2024-02-12 09:24:19 +00:00
2024-02-11 14:06:23 +00:00
2024-02-11 11:38:52 +00:00
2024-02-11 14:06:23 +00:00
def stop_run_db(self):
pass
2024-02-11 11:38:52 +00:00