convert domainCheck to regular directory
This commit is contained in:
137
domainCheck/app/ui/main_window.py
Normal file
137
domainCheck/app/ui/main_window.py
Normal file
@@ -0,0 +1,137 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
'''
|
||||
@Project :domainScanDemo
|
||||
@File :main_window.py
|
||||
@IDE :PyCharm
|
||||
@Author :梦伴
|
||||
@Date :2026/4/8 23:46
|
||||
@explain : 主窗口
|
||||
'''
|
||||
|
||||
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QTabWidget, QLabel, QScrollArea, QFrame
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtGui import QIcon
|
||||
import os
|
||||
from loguru import logger
|
||||
|
||||
from app.ui.domain_import import DomainImportWidget
|
||||
from app.ui.domain_filter import DomainFilterWidget
|
||||
from app.ui.sensitive_words import SensitiveWordsWidget
|
||||
from app.ui.juming_crawler import JumingCrawlerWidget
|
||||
from app.ui.system_settings import SystemSettingsWidget
|
||||
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
"""
|
||||
主窗口
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
"""
|
||||
初始化主窗口
|
||||
"""
|
||||
super().__init__()
|
||||
|
||||
# 设置窗口标题和大小
|
||||
self.setWindowTitle("域名工具")
|
||||
self.setGeometry(100, 100, 2000, 800)
|
||||
self.setMinimumSize(1200, 720)
|
||||
|
||||
# 设置窗口图标
|
||||
icon_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "favicon.ico")
|
||||
if os.path.exists(icon_path):
|
||||
self.setWindowIcon(QIcon(icon_path))
|
||||
logger.info(f"设置窗口图标成功: {icon_path}")
|
||||
else:
|
||||
logger.warning(f"窗口图标文件不存在: {icon_path}")
|
||||
|
||||
# 创建中央部件
|
||||
central_widget = QWidget()
|
||||
self.setCentralWidget(central_widget)
|
||||
|
||||
# 创建主布局
|
||||
main_layout = QVBoxLayout(central_widget)
|
||||
|
||||
# 创建标签页
|
||||
self.tab_widget = QTabWidget()
|
||||
self.tab_widget.setStyleSheet("""
|
||||
QTabWidget {
|
||||
font-size: 14px;
|
||||
}
|
||||
QTabBar::tab {
|
||||
padding: 10px 20px;
|
||||
background-color: #f0f0f0;
|
||||
border: 1px solid #ddd;
|
||||
border-bottom: none;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
QTabBar::tab:hover {
|
||||
background-color: #e0e0e0;
|
||||
}
|
||||
QTabBar::tab:selected {
|
||||
background-color: white;
|
||||
color: #4CAF50;
|
||||
font-weight: bold;
|
||||
border-color: #4CAF50;
|
||||
}
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #ddd;
|
||||
border-top: none;
|
||||
border-radius: 0 0 4px 4px;
|
||||
padding: 10px;
|
||||
}
|
||||
""")
|
||||
main_layout.addWidget(self.tab_widget)
|
||||
|
||||
# 创建标签页内容
|
||||
self.create_tabs()
|
||||
|
||||
# 记录日志
|
||||
logger.info("主窗口创建完成")
|
||||
|
||||
def create_tabs(self):
|
||||
"""
|
||||
创建标签页
|
||||
"""
|
||||
# 聚名爬取标签页
|
||||
juming_widget = JumingCrawlerWidget()
|
||||
self.tab_widget.addTab(self.wrap_scrollable_tab(juming_widget), "聚名爬取")
|
||||
|
||||
# 域名筛选标签页
|
||||
filter_widget = DomainFilterWidget()
|
||||
self.tab_widget.addTab(self.wrap_scrollable_tab(filter_widget), "域名筛选")
|
||||
|
||||
# 域名导入标签页
|
||||
import_widget = DomainImportWidget()
|
||||
self.tab_widget.addTab(self.wrap_scrollable_tab(import_widget), "域名导入")
|
||||
|
||||
# 敏感词配置标签页
|
||||
sensitive_widget = SensitiveWordsWidget()
|
||||
self.tab_widget.addTab(self.wrap_scrollable_tab(sensitive_widget), "敏感词配置")
|
||||
|
||||
# 系统设置标签页
|
||||
settings_widget = SystemSettingsWidget()
|
||||
self.tab_widget.addTab(self.wrap_scrollable_tab(settings_widget), "系统设置")
|
||||
|
||||
logger.info("标签页创建完成")
|
||||
|
||||
def wrap_scrollable_tab(self, widget):
|
||||
"""
|
||||
给标签页统一包一层滚动区域,保证右侧滚动条始终可用
|
||||
"""
|
||||
container = QWidget()
|
||||
container_layout = QVBoxLayout(container)
|
||||
container_layout.setContentsMargins(0, 0, 0, 0)
|
||||
container_layout.setSpacing(0)
|
||||
|
||||
scroll_area = QScrollArea()
|
||||
scroll_area.setWidgetResizable(True)
|
||||
scroll_area.setFrameShape(QFrame.NoFrame)
|
||||
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
||||
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
||||
scroll_area.setWidget(widget)
|
||||
|
||||
container_layout.addWidget(scroll_area)
|
||||
return container
|
||||
Reference in New Issue
Block a user