0

listwidget に項目を追加していますが、不思議なことに if の最初のブロックはアイコンを追加しますが、2 番目のブロックはアイコンが指定された場所にあることも確認しました

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)

elif ブロックの場合、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回のテスト

4

1 に答える 1

1

Python 文字列で\は、改行 ( \n)、タブ ( \t) などの特殊文字に使用されるエスケープ文字"images\nuke.png"です。\n"images<new-line>uke.png"

いくつかのオプションがあります。

  • それ自体をエスケープでき\ます:"images\\nuke.png"
  • エスケープを無効にする生の文字列を使用できます。r"images\nuke.png"
  • /フォルダーセパレーターに使用できます:"images/nuke.png"

私は3番目のオプションを好みます。Windows は、フォルダー区切り文字として\との両方を受け入れます。/Qt 以外では、適切なシステム セパレータに自動的に変換/されるため、使用が推奨される方法です。

Qt は、"/" が URL のパス区切りとして使用されるのと同じ方法で、ユニバーサル ディレクトリ区切りとして "/" を使用します。ディレクトリ区切り文字として常に「/」を使用すると、Qt はパスを基本のオペレーティング システムに準拠するように変換します。

于 2012-12-14T19:02:07.877 に答える