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
相关产品推荐
相关产品推荐

