You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5+Fluent UI启动屏与无标题栏窗口问题求助

问题1:启动屏(Splash Screen)后出现两个窗口

通常是启动屏未正确关闭、主窗口重复实例化或重复调用show()方法导致,解决步骤如下:

  • 确保只实例化一次主窗口,避免重复创建QMainWindow或自定义窗口对象
  • 遵循启动屏标准流程:显示启动屏 → 执行初始化操作 → 关闭启动屏 → 显示主窗口,用splash.finish(main_window)让启动屏在主窗口显示后自动关闭,避免残留
  • 检查代码中是否存在多次调用show()的情况,比如主窗口被重复调用show()

示例代码:

from PyQt5.QtWidgets import QApplication, QSplashScreen, QMainWindow
from PyQt5.QtGui import QPixmap
import sys

if __name__ == "__main__":
    app = QApplication(sys.argv)
    # 创建并显示启动屏
    splash = QSplashScreen(QPixmap("splash_image.png"))
    splash.show()
    
    # 模拟初始化操作(如加载资源、初始化数据)
    app.processEvents()  # 处理事件,保证启动屏正常显示
    
    # 仅创建一次主窗口
    main_win = QMainWindow()
    main_win.setWindowTitle("WhatsApp UI")
    
    # 初始化主窗口内容...
    
    # 关闭启动屏并显示主窗口
    splash.finish(main_win)
    main_win.show()
    
    sys.exit(app.exec_())
问题2:隐藏Fluent UI窗口标题栏的按钮和图标

以PyQt-Fluent-Widgets库为例,可通过以下方式实现:

方式1:直接隐藏标题栏指定控件

如果使用FluentWindow,可以获取标题栏对象,单独隐藏图标、最小化/最大化/关闭按钮:

from qfluentwidgets import FluentWindow

class WhatsAppWindow(FluentWindow):
    def __init__(self):
        super().__init__()
        # 隐藏窗口图标
        self.setWindowIcon(None)
        
        # 获取标题栏控件并隐藏按钮
        title_bar = self.titleBar
        title_bar.iconLabel.hide()  # 隐藏图标
        title_bar.minBtn.hide()     # 隐藏最小化按钮
        title_bar.maxBtn.hide()     # 隐藏最大化按钮
        title_bar.closeBtn.hide()   # 隐藏关闭按钮

方式2:修改窗口标志(适用于普通Qt窗口或需要完全隐藏标题栏元素的场景)

如果需要隐藏默认标题栏的所有按钮,可修改窗口标志:

from PyQt5.QtCore import Qt

# 在主窗口初始化中添加
self.setWindowFlags(self.windowFlags() & ~Qt.WindowMinMaxButtonsHint & ~Qt.WindowCloseButtonHint)
self.setWindowIcon(None)  # 隐藏窗口图标

内容的提问来源于stack exchange,提问作者DINESH KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:33:19