相对路径问题

mikewolf113 2019-03-15 09:51:49
#添加图形按钮

tbNew=QAction(QIcon('D:\\SourceCode\\Python\\pythonApp\\downloadBaiDuPic\\images\\file_new.png'),'new',MainWindow)
tb.addAction(tbNew)
tbOpen=QAction(QIcon('images/open.png'),'open',MainWindow)
tb.addAction(tbOpen)
tbSave=QAction(QIcon('/images/save.png'),'save',MainWindow)
tb.addAction(tbSave)




为什么只能写绝对路径才有用啊。还是我相对路径写的有问题啊
...全文
475 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈年椰子 2019-03-19
  • 打赏
  • 举报
回复
那估计是eric6 的设置问题。 不是代码问题。
mikewolf113 2019-03-19
  • 打赏
  • 举报
回复
在命令行情况下,在D:\SourceCode\Python\pythonApp\downloadBaiDuPic下执行python Ui_MainWindow.py文件sys.path[0] 显示的路径就是D:\SourceCode\Python\pythonApp\downloadBaiDuPic,图标也都能加载成功。 在eric6下面运行项目,sys.path[0] 显示的是空,图标也不能加载。 在命令行下D:\>python d:\SourceCode\Python\pythonApp\downloadBaiDuPic\Ui_frmMain.py,sys.path[0]显示路径是D:\SourceCode\Python\pythonApp\downloadBaiDuPic但图标加载不成功。 我修改了下程序,当在d盘根目录执行程序的时候,下面的写法是可以正确调用图标的
tbOpen=QAction(QIcon('SourceCode/Python/pythonApp/downloadBaiDuPic/images/file_open.png'),'open',MainWindow)
这是不是说python的调用路径是当前运行路径,因此相对路径是指当前调用路径的相对路径呢?
mikewolf113 2019-03-18
  • 打赏
  • 举报
回复
我把程序文件名和图片文件名修改了一下 文件Ui_MainWindow.py存放路径D:\SourceCode\Python\pythonApp\downloadBaiDuPic下 图片file_new.png;file_open.png;file_save.png存放在D:\SourceCode\Python\pythonApp\downloadBaiDuPic\images下 Ui_MainWindow.py全文代码如下

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'D:\SourceCode\Python\pythonApp\downloadBaiDuPic\frmMain.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
#打印文件当前路径用
import tkinter.messagebox
from tkinter import *
import sys

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        MainWindow.setCentralWidget(self.centralWidget)
        
        """
        -------------------------工具栏toolBar------------------------------
        """
        self.toolBar = QtWidgets.QToolBar(MainWindow)
        self.toolBar.setObjectName("toolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        
        #打印文件当前路径
        #tkinter.messagebox.showinfo('',(sys.path))
        #在工具栏区域添加文件工具栏
        tb=MainWindow.addToolBar('File')
        #添加图形按钮
        tbNew=QAction(QIcon('D:\\downloadBaiDuPic\\images\\file_new.png'),'new',MainWindow)
        tb.addAction(tbNew)
        tbOpen=QAction(QIcon('images/file_open.png'),'open',MainWindow)
        tb.addAction(tbOpen)
        tbSave=QAction(QIcon('/images/file_save.png'),'save',MainWindow)
        tb.addAction(tbSave)
        
        
        """
        --------------------------装载进窗体------------------------------
        """
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

我用的是python3.7+ PyQT5 +eric6
陈年椰子 2019-03-18
  • 打赏
  • 举报
回复
我用python3 PyQT5 验证了一下,相对路径写法没啥问题。 建议先交换排除下文件问题。

       tbNew=QAction(QIcon('D:\\SourceCode\\Python\\pythonApp\\downloadBaiDuPic\\images\\open.png'),'new',MainWindow)
       tb.addAction(tbNew)
       tbOpen=QAction(QIcon('images/file_new.png'),'open',MainWindow)
       tb.addAction(tbOpen)


mikewolf113 2019-03-18
  • 打赏
  • 举报
回复
frmMain.py 存在路径D:\SourceCode\Python\pythonApp\downloadBaiDuPic下 sys.path显示的是下图
陈年椰子 2019-03-18
  • 打赏
  • 举报
回复
这个错误有些奇怪。 我的测试是 python 3.6 + QT5.10.1 有个疑问。我看帖的那个 sys,path 第一个是个{} , 你print一下 sys.path[0] , 看看是啥? 另外, 到命令行下 , 到 D:\SourceCode\Python\pythonApp\downloadBaiDuPic 目录下 执行 python Ui_MainWindow.py 看看是否成功。
陈年椰子 2019-03-15
  • 打赏
  • 举报
回复
如果py文件是在 downloadBaiDuPic 。 那 tbOpen=QAction(QIcon(r'images\open.png'),'open',MainWindow) 应该是对的。 import sys print(sys.path) 可以看当前路径。
陈年椰子 2019-03-15
  • 打赏
  • 举报
回复
你的py 文件在什么路径?
mikewolf113 2019-03-15
  • 打赏
  • 举报
回复
没人回复 不会是问题太简单了,没人看得上吧
一去丶二三里 2019-03-15
  • 打赏
  • 举报
回复
相对路径是相对你的可执行程序(比如:app.exe)所在的路径,并不是相对源码路径。 例如:QIcon('images/save.png'),你就应该在 app.exe 所在目录中新建一个名为 images 的文件夹,然后给里面放置图片。

+ Your workspace
    - app.exe
    + images
        - save.png

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧