diff --git a/functions/function_base.py b/functions/function_base.py index b733373..0461c19 100644 --- a/functions/function_base.py +++ b/functions/function_base.py @@ -1,9 +1,11 @@ from typing import Type + from PyQt6.QtCore import Qt from PyQt6.QtWidgets import QHBoxLayout, QLabel, QLineEdit, QWidget, QPushButton from langchain_core.tools import StructuredTool from pydantic import BaseModel -from pages.action_list_view import GlobalUtil, ActionListViewItem + +from pages.edit_action_list_view import GlobalUtil, ActionListViewItem from utils.qt_util import QtUtil diff --git a/main.py b/main.py index e6cd51e..8b78ffc 100644 --- a/main.py +++ b/main.py @@ -4,12 +4,10 @@ import sys import leancloud from PyQt6.QtWidgets import QApplication -from langchain.agents import create_openai_functions_agent, AgentExecutor -from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, MessagesPlaceholder, PromptTemplate, \ - HumanMessagePromptTemplate -from pages.action_list_view import GlobalUtil +from pages.edit_action_list_view import GlobalUtil from pages.edit_page import EditPage +from pages.func_list_page import FuncListPage from pages.login_page import LoginPage from utils.config import Config @@ -43,6 +41,6 @@ class AutoMate: if __name__ == "__main__": app = QApplication(sys.argv) GlobalUtil.init() - page = EditPage() + page = FuncListPage() page.show() sys.exit(app.exec()) diff --git a/pages/action_list_view.py b/pages/edit_action_list_view.py similarity index 99% rename from pages/action_list_view.py rename to pages/edit_action_list_view.py index 35778ca..b779073 100644 --- a/pages/action_list_view.py +++ b/pages/edit_action_list_view.py @@ -1,6 +1,7 @@ from PyQt6.QtCore import Qt, QMimeData, QByteArray, QPoint from PyQt6.QtGui import QDrag from PyQt6.QtWidgets import QListWidget, QListWidgetItem, QApplication, QStyle + from pages.styled_item_delegate import StyledItemDelegate diff --git a/pages/edit_page.py b/pages/edit_page.py index d910216..6e3311c 100644 --- a/pages/edit_page.py +++ b/pages/edit_page.py @@ -1,6 +1,6 @@ from pages.bse_page import BasePage +from pages.edit_action_list_view import GlobalUtil from pages.edit_function_page import FunctionListView -from pages.action_list_view import GlobalUtil from utils.qt_util import QtUtil @@ -15,11 +15,9 @@ class EditPage(BasePage): self.ui.ListViewLayout.setStretch(0, 1) self.ui.ListViewLayout.setStretch(1, 2) self.ui.ListViewLayout.setStretch(2, 10) - self.ui.show() def __run_button_click(self): GlobalUtil.action_list_global.model() for index in range(GlobalUtil.action_list_global.count()): func = GlobalUtil.action_list_global.item(index) r = func.__getattribute__("func").run_with_out_arg() - print(r) diff --git a/pages/func_list_page.py b/pages/func_list_page.py new file mode 100644 index 0000000..701a895 --- /dev/null +++ b/pages/func_list_page.py @@ -0,0 +1,50 @@ +from PyQt6.QtCore import QSize +from PyQt6.QtGui import QIcon +from PyQt6.QtWidgets import QPushButton, QGraphicsOpacityEffect + +from pages.bse_page import BasePage +from pages.edit_page import EditPage +from utils.qt_util import QtUtil + + +class AddFuncButton(QPushButton): + def __init__(self, pos_x, pos_y, func_list_page): + super().__init__() + self.pos_x = pos_x + self.pos_y = pos_y + self.func_list_page = func_list_page + self.setMouseTracking(True) + self.clicked.connect(self.click) + self.setIcon(QIcon(QtUtil.get_icon("添加.png"))) + self.setIconSize(QSize(50, 50)) + self.setFlat(True) # 删除按钮边框 + # 按钮消息 + self.opacity_effect = QGraphicsOpacityEffect(self) + self.setGraphicsEffect(self.opacity_effect) + self.opacity_effect.setOpacity(0) + + def click(self): + self.func_list_page.hide() + EditPage().show() + + def enterEvent(self, event): + self.opacity_effect.setOpacity(1) + + def leaveEvent(self, event): + self.opacity_effect.setOpacity(0) + + +class FuncListPage(BasePage): + def setup_up(self): + self.ui = QtUtil.load_ui("func_list_page.ui") + # 四行三列,辅满通用应用列表布局 + for i in range(3): # 3行 + for j in range(4): # 4列 + add_button = AddFuncButton(i, j, self.ui) + self.ui.general_layout.addWidget(add_button, i, j) + + # 四行四列,辅满专属应用列表布局 + for i in range(3): # 4行 + for j in range(4): # 4列 + add_button = AddFuncButton(i, j, self.ui) + self.ui.special_layout.addWidget(add_button, i, j) diff --git a/pages/func_list_page.ui b/pages/func_list_page.ui new file mode 100644 index 0000000..e1ebcc9 --- /dev/null +++ b/pages/func_list_page.ui @@ -0,0 +1,54 @@ + + + MainWindow + + + + 0 + 0 + 353 + 621 + + + + MainWindow + + + + + + 0 + 0 + 351 + 241 + + + + + + + + 0 + 270 + 351 + 321 + + + + + + + + + 0 + 0 + 353 + 22 + + + + + + + + diff --git a/source/添加.png b/source/添加.png new file mode 100644 index 0000000..18f8135 Binary files /dev/null and b/source/添加.png differ diff --git a/utils/qt_util.py b/utils/qt_util.py index d805340..c955f94 100644 --- a/utils/qt_util.py +++ b/utils/qt_util.py @@ -1,7 +1,6 @@ import os from PyQt6 import uic -from PyQt6.QtWidgets import QWidget class QtUtil: @@ -10,4 +9,10 @@ class QtUtil: # 项目根目录 project_root_path = os.path.abspath(os.path.dirname(__file__)) path = os.path.join(project_root_path, "..", "pages", *path) - return uic.loadUi(path) \ No newline at end of file + return uic.loadUi(path) + + @staticmethod + def get_icon(*path): + project_root_path = os.path.abspath(os.path.dirname(__file__)) + path = os.path.join(project_root_path, "..", "source", *path) + return path