mirror of
https://github.com/xszyou/Fay.git
synced 2026-03-12 17:51:28 +08:00
1.恢复文字、唤醒词、意图接口打断功能; 2、新增支持本地mcp工具调用; 3、支持mcp工具独立控制; 4、内置mcp工具箱及日程管理mcp工具; 5、结束fay时主动关闭(断开)mcp服务; 6、优化线程管理逻辑; 7、支持ctrl+c退出fay。
90 lines
3.0 KiB
Python
90 lines
3.0 KiB
Python
import os
|
||
|
||
import time
|
||
|
||
from PyQt5.QtWidgets import *
|
||
from PyQt5.QtWidgets import QDialog, QHBoxLayout, QVBoxLayout
|
||
from PyQt5.QtWidgets import QGroupBox
|
||
from PyQt5.QtWebEngineWidgets import *
|
||
from PyQt5.QtCore import *
|
||
from PyQt5 import QtWidgets
|
||
|
||
from scheduler.thread_manager import MyThread
|
||
|
||
|
||
class MainWindow(QMainWindow):
|
||
SigSendMessageToJS = pyqtSignal(str)
|
||
|
||
def __init__(self):
|
||
super(MainWindow, self).__init__()
|
||
# self.setWindowFlags(Qt.WindowType.WindowShadeButtonHint)
|
||
self.setWindowTitle('FeiFei Alpha')
|
||
# self.setFixedSize(16 * 80, 9 * 80)
|
||
self.setGeometry(0, 0, 16 * 70, 9 * 70)
|
||
self.showMaximized()
|
||
# self.center()
|
||
self.browser = QWebEngineView()
|
||
#清空缓存
|
||
profile = QWebEngineProfile.defaultProfile()
|
||
profile.clearHttpCache()
|
||
self.browser.load(QUrl('http://127.0.0.1:5000'))
|
||
self.setCentralWidget(self.browser)
|
||
MyThread(target=self.runnable).start()
|
||
|
||
def runnable(self):
|
||
while True:
|
||
if not self.isVisible():
|
||
try:
|
||
# 正常关闭服务
|
||
import fay_booter
|
||
if fay_booter.is_running():
|
||
print("窗口关闭,正在停止Fay服务...")
|
||
fay_booter.stop()
|
||
time.sleep(0.5) # 给服务一点时间完成清理
|
||
print("服务已停止")
|
||
except BaseException as e:
|
||
print(f"正常关闭服务时出错: {e}")
|
||
finally:
|
||
# 如果正常关闭失败,再强制终止
|
||
os.system("taskkill /F /PID {}".format(os.getpid()))
|
||
time.sleep(0.05)
|
||
|
||
def center(self):
|
||
screen = QtWidgets.QDesktopWidget().screenGeometry()
|
||
size = self.geometry()
|
||
self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)
|
||
|
||
def keyPressEvent(self, event):
|
||
pass
|
||
# if event.key() == Qt.Key_F12:
|
||
# self.s = TDevWindow()
|
||
# self.s.show()
|
||
# self.browser.page().setDevToolsPage(self.s.mpJSWebView.page())
|
||
|
||
def OnReceiveMessageFromJS(self, strParameter):
|
||
if not strParameter:
|
||
return
|
||
|
||
|
||
class TDevWindow(QDialog):
|
||
def __init__(self):
|
||
super(TDevWindow, self).__init__()
|
||
self.init_ui()
|
||
|
||
def init_ui(self):
|
||
self.mpJSWebView = QWebEngineView(self)
|
||
self.url = 'https://www.baidu.com/'
|
||
self.mpJSWebView.page().load(QUrl(self.url))
|
||
self.mpJSWebView.show()
|
||
|
||
self.pJSTotalVLayout = QVBoxLayout()
|
||
self.pJSTotalVLayout.setSpacing(0)
|
||
self.pJSTotalVLayout.addWidget(self.mpJSWebView)
|
||
self.pWebGroup = QGroupBox('Web View', self)
|
||
self.pWebGroup.setLayout(self.pJSTotalVLayout)
|
||
|
||
self.mainLayout = QHBoxLayout()
|
||
self.mainLayout.setSpacing(5)
|
||
self.mainLayout.addWidget(self.pWebGroup)
|
||
self.setLayout(self.mainLayout)
|
||
self.setMinimumSize(800, 800) |