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

加载PyQt5 UI文件遇FileNotFoundError错误求助

解决PyQt5加载UI文件时的FileNotFoundError问题

我帮你分析一下这个问题,这个错误本质上是程序找不到你的main_window.ui文件,大概率是路径配置的问题,咱们一步步来解决:

先看一下你的代码和报错信息:

你的main.py代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()

报错信息:

FileNotFoundError: [Errno 2] No such file or directory: 'main_window.ui'

可能的原因和解决方案

  • 检查文件是否在同一目录
    先确认main_window.ui和main.py是不是放在同一个文件夹里。如果UI文件在子文件夹或者其他路径,直接写文件名肯定找不到。

  • 排查当前工作目录
    有时候你以为程序在脚本所在目录运行,但实际工作目录可能不一样(比如用IDE运行时,工作目录可能是项目根目录)。可以在代码开头加一行代码,打印当前工作目录:

    import os
    print("当前工作目录:", os.getcwd())
    

    运行后看看输出的路径里有没有main_window.ui,如果没有,就说明路径不对。

  • 使用绝对路径加载(简单直接)
    如果你知道UI文件的完整路径,直接写绝对路径就行,比如Windows系统:

    form_class = uic.loadUiType("C:/你的项目文件夹/main_window.ui")[0]
    

    或者Linux/macOS系统:

    form_class = uic.loadUiType("/home/你的用户名/项目文件夹/main_window.ui")[0]
    
  • 用__file__获取相对路径(推荐)
    这种方法最可靠,不管你从哪里运行程序,都能准确找到UI文件,因为它会根据脚本本身的位置来拼接路径:

    import os
    import sys
    from PyQt5.QtWidgets import *
    from PyQt5 import uic
    
    # 获取当前脚本所在的文件夹路径
    script_folder = os.path.dirname(os.path.abspath(__file__))
    # 拼接UI文件的完整路径
    ui_file = os.path.join(script_folder, "main_window.ui")
    form_class = uic.loadUiType(ui_file)[0]
    
    class MyWindow(QMainWindow, form_class):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        myWindow = MyWindow()
        myWindow.show()
        app.exec_()
    

这样修改后,程序就能准确找到你的UI文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:09:26