mirror of
https://github.com/hyb-oyqq/FRAISEMOE-Addons-Installer-NEXT.git
synced 2025-12-19 21:38:35 +00:00
refactor(source): 优化窗口大小和背景图显示
- 设置窗口最小和最大尺寸 - 优化背景图加载和显示,使用setScaledContents简化处理 - 调整标题栏和菜单区域的大小和位置 - 重构部分UI代码,提高可读性和维护性
This commit is contained in:
@@ -16,7 +16,7 @@ from data.config import (
|
|||||||
PLUGIN_HASH, UA, CONFIG_URL, LOG_FILE
|
PLUGIN_HASH, UA, CONFIG_URL, LOG_FILE
|
||||||
)
|
)
|
||||||
from utils import (
|
from utils import (
|
||||||
load_config, save_config, HashManager, AdminPrivileges, msgbox_frame
|
load_config, save_config, HashManager, AdminPrivileges, msgbox_frame, load_image_from_file
|
||||||
)
|
)
|
||||||
from workers import (
|
from workers import (
|
||||||
DownloadThread, ProgressWindow, IpOptimizerThread,
|
DownloadThread, ProgressWindow, IpOptimizerThread,
|
||||||
@@ -37,9 +37,9 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# 调整窗口大小以适应背景图片比例 (1280x720)
|
# 调整窗口大小以适应背景图片比例 (1280x720)
|
||||||
self.resize(1280, 720)
|
self.resize(1280, 720)
|
||||||
# 移除大小限制,允许自由缩放
|
# 设置固定尺寸范围
|
||||||
# self.setMinimumSize(QSize(1024, 576))
|
self.setMinimumSize(QSize(1024, 576))
|
||||||
# self.setMaximumSize(QSize(1024, 576))
|
self.setMaximumSize(QSize(1280, 720))
|
||||||
|
|
||||||
# 窗口比例 (16:9)
|
# 窗口比例 (16:9)
|
||||||
self.aspect_ratio = 16 / 9
|
self.aspect_ratio = 16 / 9
|
||||||
@@ -174,17 +174,22 @@ class MainWindow(QMainWindow):
|
|||||||
if hasattr(self.ui, 'content_container'):
|
if hasattr(self.ui, 'content_container'):
|
||||||
self.ui.content_container.setGeometry(0, 0, new_width, new_height)
|
self.ui.content_container.setGeometry(0, 0, new_width, new_height)
|
||||||
|
|
||||||
# 更新标题栏宽度
|
# 更新标题栏宽度和高度
|
||||||
if hasattr(self.ui, 'title_bar'):
|
if hasattr(self.ui, 'title_bar'):
|
||||||
self.ui.title_bar.setGeometry(0, 0, new_width, 30)
|
self.ui.title_bar.setGeometry(0, 0, new_width, 35)
|
||||||
|
|
||||||
|
# 更新菜单区域
|
||||||
|
if hasattr(self.ui, 'menu_area'):
|
||||||
|
self.ui.menu_area.setGeometry(0, 35, new_width, 30)
|
||||||
|
|
||||||
# 更新内容区域大小
|
# 更新内容区域大小
|
||||||
if hasattr(self.ui, 'inner_content'):
|
if hasattr(self.ui, 'inner_content'):
|
||||||
self.ui.inner_content.setGeometry(0, 65, new_width, new_height - 65)
|
self.ui.inner_content.setGeometry(0, 65, new_width, new_height - 65)
|
||||||
|
|
||||||
# 更新背景图大小
|
# 更新背景图大小 - 使用setScaledContents简化处理
|
||||||
if hasattr(self.ui, 'Mainbg'):
|
if hasattr(self.ui, 'Mainbg'):
|
||||||
self.ui.Mainbg.setGeometry(0, 0, new_width, new_height - 65)
|
self.ui.Mainbg.setGeometry(0, 0, new_width, new_height - 65)
|
||||||
|
# 使用setScaledContents=True,不需要手动缩放
|
||||||
|
|
||||||
if hasattr(self.ui, 'loadbg'):
|
if hasattr(self.ui, 'loadbg'):
|
||||||
self.ui.loadbg.setGeometry(0, 0, new_width, new_height - 65)
|
self.ui.loadbg.setGeometry(0, 0, new_width, new_height - 65)
|
||||||
|
|||||||
@@ -15,16 +15,8 @@ import os
|
|||||||
|
|
||||||
# 导入配置常量
|
# 导入配置常量
|
||||||
from data.config import APP_NAME, APP_VERSION
|
from data.config import APP_NAME, APP_VERSION
|
||||||
|
# 导入工具函数
|
||||||
def load_base64_image(base64_str):
|
from utils import load_base64_image, load_image_from_file
|
||||||
pixmap = QPixmap()
|
|
||||||
pixmap.loadFromData(base64.b64decode(base64_str))
|
|
||||||
return pixmap
|
|
||||||
|
|
||||||
def load_image_from_file(file_path):
|
|
||||||
if os.path.exists(file_path):
|
|
||||||
return QPixmap(file_path)
|
|
||||||
return QPixmap()
|
|
||||||
|
|
||||||
class Ui_MainWindows(object):
|
class Ui_MainWindows(object):
|
||||||
def setupUi(self, MainWindows):
|
def setupUi(self, MainWindows):
|
||||||
@@ -33,9 +25,11 @@ class Ui_MainWindows(object):
|
|||||||
MainWindows.setEnabled(True)
|
MainWindows.setEnabled(True)
|
||||||
# 调整窗口默认大小为1280x720以匹配背景图片
|
# 调整窗口默认大小为1280x720以匹配背景图片
|
||||||
MainWindows.resize(1280, 720)
|
MainWindows.resize(1280, 720)
|
||||||
# 移除最大和最小尺寸限制,允许自由缩放
|
# 锁定窗口比例为16:9,确保不会变形,同时限制最大尺寸不超过背景图片
|
||||||
# MainWindows.setMinimumSize(QSize(1024, 576))
|
MainWindows.setMinimumSize(QSize(1024, 576)) # 16:9最小尺寸
|
||||||
# MainWindows.setMaximumSize(QSize(1024, 576))
|
MainWindows.setMaximumSize(QSize(1280, 720)) # 将最大尺寸限制为1280x720
|
||||||
|
# 设置固定纵横比
|
||||||
|
self.aspect_ratio = 16/9
|
||||||
MainWindows.setMouseTracking(False)
|
MainWindows.setMouseTracking(False)
|
||||||
MainWindows.setTabletTracking(False)
|
MainWindows.setTabletTracking(False)
|
||||||
MainWindows.setAcceptDrops(True)
|
MainWindows.setAcceptDrops(True)
|
||||||
@@ -296,46 +290,59 @@ class Ui_MainWindows(object):
|
|||||||
# 原来的loadbg保持不变
|
# 原来的loadbg保持不变
|
||||||
self.loadbg = QLabel(self.inner_content)
|
self.loadbg = QLabel(self.inner_content)
|
||||||
self.loadbg.setObjectName(u"loadbg")
|
self.loadbg.setObjectName(u"loadbg")
|
||||||
self.loadbg.setGeometry(QRect(0, 0, 1280, 655)) # 调整高度从645到655
|
self.loadbg.setGeometry(QRect(0, 0, 1280, 655))
|
||||||
self.loadbg.setPixmap(load_base64_image(img_data["loadbg"]))
|
# 加载背景图并允许拉伸
|
||||||
|
bg_pixmap = load_base64_image(img_data["loadbg"])
|
||||||
|
self.loadbg.setPixmap(bg_pixmap)
|
||||||
self.loadbg.setScaledContents(True)
|
self.loadbg.setScaledContents(True)
|
||||||
|
|
||||||
self.vol1bg = QLabel(self.inner_content)
|
self.vol1bg = QLabel(self.inner_content)
|
||||||
self.vol1bg.setObjectName(u"vol1bg")
|
self.vol1bg.setObjectName(u"vol1bg")
|
||||||
self.vol1bg.setGeometry(QRect(0, 150, 93, 64))
|
self.vol1bg.setGeometry(QRect(0, 150, 93, 64))
|
||||||
|
# 使用更简洁的方式
|
||||||
self.vol1bg.setPixmap(load_base64_image(img_data["vol1"]))
|
self.vol1bg.setPixmap(load_base64_image(img_data["vol1"]))
|
||||||
self.vol1bg.setScaledContents(True)
|
self.vol1bg.setScaledContents(True)
|
||||||
|
|
||||||
self.vol2bg = QLabel(self.inner_content)
|
self.vol2bg = QLabel(self.inner_content)
|
||||||
self.vol2bg.setObjectName(u"vol2bg")
|
self.vol2bg.setObjectName(u"vol2bg")
|
||||||
self.vol2bg.setGeometry(QRect(0, 210, 93, 64))
|
self.vol2bg.setGeometry(QRect(0, 210, 93, 64))
|
||||||
|
# 使用更简洁的方式
|
||||||
self.vol2bg.setPixmap(load_base64_image(img_data["vol2"]))
|
self.vol2bg.setPixmap(load_base64_image(img_data["vol2"]))
|
||||||
self.vol2bg.setScaledContents(True)
|
self.vol2bg.setScaledContents(True)
|
||||||
|
|
||||||
self.vol3bg = QLabel(self.inner_content)
|
self.vol3bg = QLabel(self.inner_content)
|
||||||
self.vol3bg.setObjectName(u"vol3bg")
|
self.vol3bg.setObjectName(u"vol3bg")
|
||||||
self.vol3bg.setGeometry(QRect(0, 270, 93, 64))
|
self.vol3bg.setGeometry(QRect(0, 270, 93, 64))
|
||||||
|
# 使用更简洁的方式
|
||||||
self.vol3bg.setPixmap(load_base64_image(img_data["vol3"]))
|
self.vol3bg.setPixmap(load_base64_image(img_data["vol3"]))
|
||||||
self.vol3bg.setScaledContents(True)
|
self.vol3bg.setScaledContents(True)
|
||||||
|
|
||||||
self.vol4bg = QLabel(self.inner_content)
|
self.vol4bg = QLabel(self.inner_content)
|
||||||
self.vol4bg.setObjectName(u"vol4bg")
|
self.vol4bg.setObjectName(u"vol4bg")
|
||||||
self.vol4bg.setGeometry(QRect(0, 330, 93, 64))
|
self.vol4bg.setGeometry(QRect(0, 330, 93, 64))
|
||||||
|
# 使用更简洁的方式
|
||||||
self.vol4bg.setPixmap(load_base64_image(img_data["vol4"]))
|
self.vol4bg.setPixmap(load_base64_image(img_data["vol4"]))
|
||||||
self.vol4bg.setScaledContents(True)
|
self.vol4bg.setScaledContents(True)
|
||||||
|
|
||||||
self.afterbg = QLabel(self.inner_content)
|
self.afterbg = QLabel(self.inner_content)
|
||||||
self.afterbg.setObjectName(u"afterbg")
|
self.afterbg.setObjectName(u"afterbg")
|
||||||
self.afterbg.setGeometry(QRect(0, 390, 93, 64))
|
self.afterbg.setGeometry(QRect(0, 390, 93, 64))
|
||||||
|
# 使用更简洁的方式
|
||||||
self.afterbg.setPixmap(load_base64_image(img_data["after"]))
|
self.afterbg.setPixmap(load_base64_image(img_data["after"]))
|
||||||
self.afterbg.setScaledContents(True)
|
self.afterbg.setScaledContents(True)
|
||||||
|
|
||||||
# 修复Mainbg位置并使用title_bg1.png作为背景图片
|
# 修复Mainbg位置并使用title_bg1.png作为背景图片
|
||||||
self.Mainbg = QLabel(self.inner_content)
|
self.Mainbg = QLabel(self.inner_content)
|
||||||
self.Mainbg.setObjectName(u"Mainbg")
|
self.Mainbg.setObjectName(u"Mainbg")
|
||||||
self.Mainbg.setGeometry(QRect(0, 0, 1280, 655)) # 调整高度从645到655
|
self.Mainbg.setGeometry(QRect(0, 0, 1280, 655))
|
||||||
self.Mainbg.setPixmap(load_image_from_file(os.path.join(os.path.dirname(os.path.dirname(__file__)), "IMG", "BG", "title_bg1.png")))
|
# 允许拉伸以填满整个区域
|
||||||
self.Mainbg.setScaledContents(True)
|
main_bg_pixmap = load_image_from_file(os.path.join(os.path.dirname(os.path.dirname(__file__)), "IMG", "BG", "title_bg1.png"))
|
||||||
|
|
||||||
|
# 如果加载的图片不是空的,则设置,并允许拉伸填满
|
||||||
|
if not main_bg_pixmap.isNull():
|
||||||
|
self.Mainbg.setPixmap(main_bg_pixmap)
|
||||||
|
self.Mainbg.setScaledContents(True)
|
||||||
|
self.Mainbg.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
# 使用新的按钮图片
|
# 使用新的按钮图片
|
||||||
button_pixmap = load_image_from_file(os.path.join(os.path.dirname(os.path.dirname(__file__)), "IMG", "BTN", "Button.png"))
|
button_pixmap = load_image_from_file(os.path.join(os.path.dirname(os.path.dirname(__file__)), "IMG", "BTN", "Button.png"))
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
from .logger import Logger
|
from .logger import Logger
|
||||||
from .helpers import (
|
from .helpers import (
|
||||||
load_base64_image, HashManager, AdminPrivileges, msgbox_frame,
|
load_base64_image, HashManager, AdminPrivileges, msgbox_frame,
|
||||||
load_config, save_config, HostsManager, censor_url, resource_path
|
load_config, save_config, HostsManager, censor_url, resource_path,
|
||||||
|
load_image_from_file
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'Logger',
|
'Logger',
|
||||||
'load_base64_image',
|
'load_base64_image',
|
||||||
|
'load_image_from_file',
|
||||||
'HashManager',
|
'HashManager',
|
||||||
'AdminPrivileges',
|
'AdminPrivileges',
|
||||||
'msgbox_frame',
|
'msgbox_frame',
|
||||||
|
|||||||
@@ -37,6 +37,19 @@ def load_base64_image(base64_str):
|
|||||||
pixmap.loadFromData(base64.b64decode(base64_str))
|
pixmap.loadFromData(base64.b64decode(base64_str))
|
||||||
return pixmap
|
return pixmap
|
||||||
|
|
||||||
|
def load_image_from_file(file_path):
|
||||||
|
"""加载图像文件到QPixmap
|
||||||
|
|
||||||
|
Args:
|
||||||
|
file_path: 图像文件路径
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
QPixmap: 加载的图像
|
||||||
|
"""
|
||||||
|
if os.path.exists(file_path):
|
||||||
|
return QPixmap(file_path)
|
||||||
|
return QPixmap()
|
||||||
|
|
||||||
def msgbox_frame(title, text, buttons=QtWidgets.QMessageBox.StandardButton.NoButton):
|
def msgbox_frame(title, text, buttons=QtWidgets.QMessageBox.StandardButton.NoButton):
|
||||||
msg_box = QtWidgets.QMessageBox()
|
msg_box = QtWidgets.QMessageBox()
|
||||||
msg_box.setWindowTitle(title)
|
msg_box.setWindowTitle(title)
|
||||||
|
|||||||
Reference in New Issue
Block a user