我正在向listwidget添加一个项目,但奇怪的是第一个if块添加图标而第二个块不是我还检查图标是否在指定位置就位
def addToRenderQueue(self):
ext=os.path.splitext(str(self.scnFilePath.text()))[-1]
if self.mayachkBox.isChecked() and (ext=='.ma'):
img_mIcon=QtGui.QPixmap("images\icon_maya-small.png")
ntask=self.makeBatTask()
self.itemTask=QtGui.QListWidgetItem(ntask)
self.itemTask.setIcon(QtGui.QIcon(img_mIcon))
self.listWidget.insertItem(0,self.itemTask)
elif self.nukechkBox.isChecked() and (ext=='.nk'):
img_nIcon=QtGui.QPixmap("images\nuke.png")
ntask=self.makeBatTask()
self.itemTask=QtGui.QListWidgetItem(ntask)
self.itemTask.setIcon(QtGui.QIcon(img_nIcon))
self.listWidget.insertItem(0,self.itemTask)
for elif block ntask包含这种字符串:Nuke6.1.exe -t E:\ Dropbox \ Research_Study \ myprojects \ Batch \ nukeRender.py Write2 E:/ Dropbox / Research_Study / myprojects / Batch / test_project_nuke / sign_board。 nk 1 16 1测试
答案 0 :(得分:1)
在Python字符串中,\
是转义字符,用于特殊字符,如换行符(\n
),制表符(\t
)等。在第二个路径中,{ {1}},您有"images\nuke.png"
所以它被解析为\n
而PyQt无法找到该文件。
您有几个选择:
"images<new-line>uke.png"
本身:\
"images\\nuke.png"
r"images\nuke.png"
用于文件夹分隔符:/
我更喜欢第三种选择。对于文件夹分隔符,Windows同时接受"images/nuke.png"
和\
。除了在Qt中,使用/
是首选方法,因为它是automatically translated到适当的系统分隔符:
Qt使用“/”作为通用目录分隔符 “/”用作URL中的路径分隔符。如果你总是使用“/”作为 目录分隔符,Qt将转换您的路径以符合 基础操作系统。