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

