优化记忆窗口与最小化到托盘的体验
This commit is contained in:
97
AUTO_MAA.py
97
AUTO_MAA.py
@@ -35,6 +35,7 @@ from PySide6.QtWidgets import (
|
|||||||
QFileDialog,
|
QFileDialog,
|
||||||
QMessageBox,
|
QMessageBox,
|
||||||
QLineEdit,
|
QLineEdit,
|
||||||
|
QTabWidget,
|
||||||
QToolBox,
|
QToolBox,
|
||||||
QTableWidget,
|
QTableWidget,
|
||||||
QTableWidgetItem,
|
QTableWidgetItem,
|
||||||
@@ -1192,6 +1193,9 @@ class Main(QWidget):
|
|||||||
self.cur = self.db.cursor()
|
self.cur = self.db.cursor()
|
||||||
|
|
||||||
# 初始化控件
|
# 初始化控件
|
||||||
|
self.main_tab = self.ui.findChild(QTabWidget, "tabWidget_main")
|
||||||
|
self.main_tab.currentChanged.connect(self.change_config)
|
||||||
|
|
||||||
self.user_set = self.ui.findChild(QToolBox, "toolBox_userset")
|
self.user_set = self.ui.findChild(QToolBox, "toolBox_userset")
|
||||||
self.user_set.currentChanged.connect(self.change_userlist_method)
|
self.user_set.currentChanged.connect(self.change_userlist_method)
|
||||||
|
|
||||||
@@ -1271,7 +1275,8 @@ class Main(QWidget):
|
|||||||
self.mail_address = self.ui.findChild(QLineEdit, "lineEdit_mailaddress")
|
self.mail_address = self.ui.findChild(QLineEdit, "lineEdit_mailaddress")
|
||||||
self.mail_address.textChanged.connect(self.change_config)
|
self.mail_address.textChanged.connect(self.change_config)
|
||||||
|
|
||||||
self.show_tray = self.ui.findChild(QPushButton, "pushButton_show_tray")
|
self.if_to_tray = self.ui.findChild(QCheckBox, "checkBox_iftotray")
|
||||||
|
self.if_to_tray.stateChanged.connect(self.change_config)
|
||||||
|
|
||||||
self.check_update = self.ui.findChild(QPushButton, "pushButton_check_update")
|
self.check_update = self.ui.findChild(QPushButton, "pushButton_check_update")
|
||||||
self.check_update.clicked.connect(self.check_version)
|
self.check_update.clicked.connect(self.check_version)
|
||||||
@@ -1409,8 +1414,11 @@ class Main(QWidget):
|
|||||||
["SelfSet.IfProxyDirectly", "False"],
|
["SelfSet.IfProxyDirectly", "False"],
|
||||||
["SelfSet.IfSendMail", "False"],
|
["SelfSet.IfSendMail", "False"],
|
||||||
["SelfSet.MailAddress", ""],
|
["SelfSet.MailAddress", ""],
|
||||||
|
["SelfSet.IfToTray", "False"],
|
||||||
["SelfSet.UIsize", "1200x700"],
|
["SelfSet.UIsize", "1200x700"],
|
||||||
["SelfSet.UIlocation", "100x100"],
|
["SelfSet.UIlocation", "100x100"],
|
||||||
|
["SelfSet.UImaximized", "False"],
|
||||||
|
["SelfSet.MainIndex", 0],
|
||||||
]
|
]
|
||||||
|
|
||||||
# 导入配置文件
|
# 导入配置文件
|
||||||
@@ -1849,6 +1857,8 @@ class Main(QWidget):
|
|||||||
# 阻止GUI程序配置被立即读入程序形成死循环
|
# 阻止GUI程序配置被立即读入程序形成死循环
|
||||||
self.if_update_config = False
|
self.if_update_config = False
|
||||||
|
|
||||||
|
self.main_tab.setCurrentIndex(self.config["Default"]["SelfSet.MainIndex"])
|
||||||
|
|
||||||
self.maa_path.setText(self.config["Default"]["MaaSet.path"].replace("\\", "/"))
|
self.maa_path.setText(self.config["Default"]["MaaSet.path"].replace("\\", "/"))
|
||||||
self.routine.setValue(self.config["Default"]["TimeLimit.routine"])
|
self.routine.setValue(self.config["Default"]["TimeLimit.routine"])
|
||||||
self.annihilation.setValue(self.config["Default"]["TimeLimit.annihilation"])
|
self.annihilation.setValue(self.config["Default"]["TimeLimit.annihilation"])
|
||||||
@@ -1875,6 +1885,10 @@ class Main(QWidget):
|
|||||||
bool(self.config["Default"]["SelfSet.IfSendMail"] == "True")
|
bool(self.config["Default"]["SelfSet.IfSendMail"] == "True")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.if_to_tray.setChecked(
|
||||||
|
bool(self.config["Default"]["SelfSet.IfToTray"] == "True")
|
||||||
|
)
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
self.start_time[i][0].setChecked(
|
self.start_time[i][0].setChecked(
|
||||||
bool(self.config["Default"][f"TimeSet.set{i + 1}"] == "True")
|
bool(self.config["Default"][f"TimeSet.set{i + 1}"] == "True")
|
||||||
@@ -2293,6 +2307,8 @@ class Main(QWidget):
|
|||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
self.config["Default"]["SelfSet.MainIndex"] = self.main_tab.currentIndex()
|
||||||
|
|
||||||
self.config["Default"]["TimeLimit.routine"] = self.routine.value()
|
self.config["Default"]["TimeLimit.routine"] = self.routine.value()
|
||||||
self.config["Default"]["TimeLimit.annihilation"] = self.annihilation.value()
|
self.config["Default"]["TimeLimit.annihilation"] = self.annihilation.value()
|
||||||
self.config["Default"]["TimesLimit.run"] = self.num.value()
|
self.config["Default"]["TimesLimit.run"] = self.num.value()
|
||||||
@@ -2318,6 +2334,11 @@ class Main(QWidget):
|
|||||||
else:
|
else:
|
||||||
self.config["Default"]["SelfSet.IfSendMail"] = "False"
|
self.config["Default"]["SelfSet.IfSendMail"] = "False"
|
||||||
|
|
||||||
|
if self.if_to_tray.isChecked():
|
||||||
|
self.config["Default"]["SelfSet.IfToTray"] = "True"
|
||||||
|
else:
|
||||||
|
self.config["Default"]["SelfSet.IfToTray"] = "False"
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
if self.start_time[i][0].isChecked():
|
if self.start_time[i][0].isChecked():
|
||||||
self.config["Default"][f"TimeSet.set{i + 1}"] = "True"
|
self.config["Default"][f"TimeSet.set{i + 1}"] = "True"
|
||||||
@@ -2662,22 +2683,12 @@ class AUTO_MAA(QMainWindow):
|
|||||||
self.setWindowIcon(QIcon(f"{self.main.app_path}/gui/ico/AUTO_MAA.ico"))
|
self.setWindowIcon(QIcon(f"{self.main.app_path}/gui/ico/AUTO_MAA.ico"))
|
||||||
self.setWindowTitle("AUTO_MAA")
|
self.setWindowTitle("AUTO_MAA")
|
||||||
|
|
||||||
# 设置窗口初始大小与位置
|
|
||||||
size = list(map(int, self.main.config["Default"]["SelfSet.UIsize"].split("x")))
|
|
||||||
location = list(
|
|
||||||
map(int, self.main.config["Default"]["SelfSet.UIlocation"].split("x"))
|
|
||||||
)
|
|
||||||
self.setGeometry(location[0], location[1], size[0], size[1])
|
|
||||||
|
|
||||||
# 创建系统托盘及其菜单
|
# 创建系统托盘及其菜单
|
||||||
self.tray = QSystemTrayIcon(
|
self.tray = QSystemTrayIcon(
|
||||||
QIcon(f"{self.main.app_path}/gui/ico/AUTO_MAA.ico"), self
|
QIcon(f"{self.main.app_path}/gui/ico/AUTO_MAA.ico"), self
|
||||||
)
|
)
|
||||||
self.tray_menu = QMenu()
|
self.tray_menu = QMenu()
|
||||||
|
|
||||||
# 连接最小化到托盘功能
|
|
||||||
self.main.show_tray.clicked.connect(self.show_tray)
|
|
||||||
|
|
||||||
# 显示主界面菜单项
|
# 显示主界面菜单项
|
||||||
show_main = self.tray_menu.addAction("显示主界面")
|
show_main = self.tray_menu.addAction("显示主界面")
|
||||||
show_main.triggered.connect(self.show_main)
|
show_main.triggered.connect(self.show_main)
|
||||||
@@ -2697,14 +2708,17 @@ class AUTO_MAA(QMainWindow):
|
|||||||
self.tray.setContextMenu(self.tray_menu)
|
self.tray.setContextMenu(self.tray_menu)
|
||||||
self.tray.activated.connect(self.on_tray_activated)
|
self.tray.activated.connect(self.on_tray_activated)
|
||||||
|
|
||||||
|
self.set_ui("配置")
|
||||||
|
|
||||||
def show_tray(self):
|
def show_tray(self):
|
||||||
"""最小化到托盘"""
|
"""最小化到托盘"""
|
||||||
|
self.set_ui("保存")
|
||||||
self.hide()
|
self.hide()
|
||||||
self.tray.show()
|
self.tray.show()
|
||||||
|
|
||||||
def show_main(self):
|
def show_main(self):
|
||||||
"""显示主界面"""
|
"""显示主界面"""
|
||||||
self.show()
|
self.set_ui("配置")
|
||||||
self.tray.hide()
|
self.tray.hide()
|
||||||
|
|
||||||
def on_tray_activated(self, reason):
|
def on_tray_activated(self, reason):
|
||||||
@@ -2714,7 +2728,14 @@ class AUTO_MAA(QMainWindow):
|
|||||||
|
|
||||||
def start_task(self, mode):
|
def start_task(self, mode):
|
||||||
"""调起对应任务"""
|
"""调起对应任务"""
|
||||||
if not self.main.MainTimer.is_maa_run:
|
if self.main.MainTimer.is_maa_run:
|
||||||
|
self.main.push_notification(
|
||||||
|
f"无法运行{mode}!",
|
||||||
|
"当前已有任务正在运行,请在该任务结束后重试",
|
||||||
|
"当前已有任务正在运行,请在该任务结束后重试",
|
||||||
|
10,
|
||||||
|
)
|
||||||
|
else:
|
||||||
self.main.maa_starter(mode)
|
self.main.maa_starter(mode)
|
||||||
|
|
||||||
def kill_main(self):
|
def kill_main(self):
|
||||||
@@ -2722,19 +2743,62 @@ class AUTO_MAA(QMainWindow):
|
|||||||
self.close()
|
self.close()
|
||||||
app.quit()
|
app.quit()
|
||||||
|
|
||||||
def closeEvent(self, event: QCloseEvent):
|
def set_ui(self, mode):
|
||||||
"""清理残余进程"""
|
"""设置窗口相关属性"""
|
||||||
|
|
||||||
|
# 保存窗口相关属性
|
||||||
|
if mode == "保存":
|
||||||
|
|
||||||
# 保存窗口最终大小与位置
|
|
||||||
self.main.config["Default"][
|
self.main.config["Default"][
|
||||||
"SelfSet.UIsize"
|
"SelfSet.UIsize"
|
||||||
] = f"{self.geometry().width()}x{self.geometry().height()}"
|
] = f"{self.geometry().width()}x{self.geometry().height()}"
|
||||||
self.main.config["Default"][
|
self.main.config["Default"][
|
||||||
"SelfSet.UIlocation"
|
"SelfSet.UIlocation"
|
||||||
] = f"{self.geometry().x()}x{self.geometry().y()}"
|
] = f"{self.geometry().x()}x{self.geometry().y()}"
|
||||||
|
if self.isMaximized():
|
||||||
|
self.main.config["Default"]["SelfSet.UImaximized"] = "True"
|
||||||
|
else:
|
||||||
|
self.main.config["Default"]["SelfSet.UImaximized"] = "False"
|
||||||
with open(self.main.config_path, "w", encoding="utf-8") as f:
|
with open(self.main.config_path, "w", encoding="utf-8") as f:
|
||||||
json.dump(self.main.config, f, indent=4)
|
json.dump(self.main.config, f, indent=4)
|
||||||
|
|
||||||
|
# 配置窗口相关属性
|
||||||
|
elif mode == "配置":
|
||||||
|
|
||||||
|
size = list(
|
||||||
|
map(int, self.main.config["Default"]["SelfSet.UIsize"].split("x"))
|
||||||
|
)
|
||||||
|
location = list(
|
||||||
|
map(int, self.main.config["Default"]["SelfSet.UIlocation"].split("x"))
|
||||||
|
)
|
||||||
|
self.setGeometry(location[0], location[1], size[0], size[1])
|
||||||
|
if self.main.config["Default"]["SelfSet.UImaximized"] == "True":
|
||||||
|
self.showMinimized()
|
||||||
|
self.showMaximized()
|
||||||
|
elif self.main.config["Default"]["SelfSet.UImaximized"] == "False":
|
||||||
|
self.showMinimized()
|
||||||
|
self.showNormal()
|
||||||
|
else:
|
||||||
|
self.showMinimized()
|
||||||
|
self.show()
|
||||||
|
|
||||||
|
def changeEvent(self, event: QtCore.QEvent):
|
||||||
|
"""重写后的 changeEvent"""
|
||||||
|
|
||||||
|
# 最小化到托盘功能实现
|
||||||
|
if event.type() == QtCore.QEvent.WindowStateChange:
|
||||||
|
if self.windowState() & QtCore.Qt.WindowMinimized:
|
||||||
|
if self.main.config["Default"]["SelfSet.IfToTray"] == "True":
|
||||||
|
self.show_tray()
|
||||||
|
|
||||||
|
# 保留其它 changeEvent 方法
|
||||||
|
return super().changeEvent(event)
|
||||||
|
|
||||||
|
def closeEvent(self, event: QCloseEvent):
|
||||||
|
"""清理残余进程"""
|
||||||
|
|
||||||
|
self.set_ui("保存")
|
||||||
|
|
||||||
# 清理各功能线程
|
# 清理各功能线程
|
||||||
self.main.MainTimer.requestInterruption()
|
self.main.MainTimer.requestInterruption()
|
||||||
self.main.MainTimer.quit()
|
self.main.MainTimer.quit()
|
||||||
@@ -2763,5 +2827,4 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
window = AUTO_MAA()
|
window = AUTO_MAA()
|
||||||
window.show()
|
|
||||||
sys.exit(app.exec())
|
sys.exit(app.exec())
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_13">
|
<layout class="QVBoxLayout" name="verticalLayout_13">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget_main">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
@@ -189,8 +189,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>98</width>
|
<width>1156</width>
|
||||||
<height>74</height>
|
<height>546</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@@ -1227,7 +1227,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QFrame" name="frame_show_tray">
|
<widget class="QFrame" name="frame_iftotray">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Shape::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -1236,33 +1236,20 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_23">
|
<layout class="QHBoxLayout" name="horizontalLayout_23">
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_17">
|
<widget class="QCheckBox" name="checkBox_iftotray">
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pushButton_show_tray">
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>最小化到托盘</string>
|
<string>最小化到托盘</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_18">
|
<spacer name="horizontalSpacer_17">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>149</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"main_version": "4.1.2.7",
|
"main_version": "4.1.2.8",
|
||||||
"main_download_url": "https://ghp.ci/https://github.com/DLmaster361/AUTO_MAA/releases/download/v4.1.2_beta/AUTO_MAA_v4.1.2_beta.zip",
|
"main_download_url": "https://ghp.ci/https://github.com/DLmaster361/AUTO_MAA/releases/download/v4.1.2_beta/AUTO_MAA_v4.1.2_beta.zip",
|
||||||
"updater_version": "1.0.5.0",
|
"updater_version": "1.0.5.0",
|
||||||
"updater_download_url": "https://ghp.ci/https://github.com/DLmaster361/AUTO_MAA/releases/download/v4.1.2_beta/Updater_v1.0.5.zip",
|
"updater_download_url": "https://ghp.ci/https://github.com/DLmaster361/AUTO_MAA/releases/download/v4.1.2_beta/Updater_v1.0.5.zip",
|
||||||
"announcement": "\n## 新增功能\n- 记忆窗口位置\n- 邮件通知功能上线\n- 添加最小化到托盘功能\n## 修复BUG\n- 修复定时执行功能在设定时刻无法中止任务的问题\n- 修复更新时主程序关闭不彻底的问题\n## 程序优化\n- 优化`MaaRunner`初始化流程\n- 合并MAA启动器配置流程\n- 优化图标\n- Updater.exe不再依赖.ui文件"
|
"announcement": "\n## 新增功能\n- 记忆窗口与菜单配置\n- 邮件通知功能上线\n- 添加最小化到托盘功能\n## 修复BUG\n- 修复定时执行功能在设定时刻无法中止任务的问题\n- 修复更新时主程序关闭不彻底的问题\n## 程序优化\n- 优化`MaaRunner`初始化流程\n- 合并MAA启动器配置流程\n- 优化图标\n- Updater.exe不再依赖.ui文件"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user