【问题标题】:strange behaviour while adding QIcon添加 QIcon 时的奇怪行为
【发布时间】:2012-12-14 11:50:08
【问题描述】:

我正在向 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 测试

【问题讨论】:

    标签: pyqt4 qpixmap qicon


    【解决方案1】:

    在 Python 字符串中,\ 是转义字符,用于换行符 (\n)、制表符 (\t) 等特殊字符。在第二个路径 "images\nuke.png" 中,您有 @ 987654327@ 所以它被解析为"images<new-line>uke.png" 并且PyQt找不到那个文件。

    你有几个选择:

    • 您可以转义\ 本身:"images\\nuke.png"
    • 您可以使用禁用转义的原始字符串:r"images\nuke.png"
    • 您可以使用/ 作为文件夹分隔符:"images/nuke.png"

    我更喜欢第三种选择。 Windows 接受 \/ 作为文件夹分隔符。除了在 Qt 中,使用/ 是首选方式,因为它是automatically translated 到适当的系统分隔符:

    Qt 使用“/”作为通用目录分隔符,其方式与 “/”用作 URL 中的路径分隔符。如果你总是使用“/”作为 目录分隔符,Qt 会翻译你的路径以符合 底层操作系统。

    【讨论】:

    • 没有人,我认为这应该解决,但我尝试了所有选项,但图标仍然没有出现......
    • 忘了提及,即使在较低的 else 块中使用第一个 if 块中使用的图标,它也不会显示,但如果执行“if”块,它会显示它。
    • @san: 你确定elif 块被执行了吗?
    • yes 100 % 因为添加了 elif 块生成的文本..请参阅link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2017-09-05
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多