Arama butonu
Bu konudaki kullanıcılar: 1 misafir
0
Cevap
382
Tıklama
0
Öne Çıkarma
PySide QtreeWidget Problemi
F
8 yıl
Er
Konu Sahibi

Merhabalar. Bu güzel forum sayfasını açtığınız için teşekkür ederim.

Öncelikle ben Nuke Programı için basit bir script yazdım. Herşey gayet güzel çalışıyor fakat bir noktada takıldım.

Bir adet PySide ile TreeWidget yerleştirdim. Program içerisinde seçtiğim objeleri listelemesi için. Listeleme işlemi başarılı fakat sadece 1. Column'a listeliyor. 2. Column'a herhangi bir şey yazdıramıyorum.

(imajı linkten veriyorum)https://ibb.co/exkQJw

İmaj'da da gördüğünüz gibi Label Column'u boş. Acaba nerede hata yapıyorum diye düşünüyorum:

Tam satırlar burada:


import os, sys
from PySide.QtGui import *
from PySide.QtCore import *
import nuke

class f_modifier(QWidget):
def __init__(self):
super(f_modifier, self).__init__()
self.f_modifierUI()

def f_modifierUI(self):
def list_selected_nodes():
self.nodeList.clear()
for sn in nuke.selectedNodes():
nodes = sn["name"].value()
self.nodeList.addItem(nodes)
print nodes
try:
ifSelectedNodes = nuke.selectedNode()
except:
nuke.message("Please Select a Node(s)")


# def listAllNodes():
# an = nuke.allNodes()
# for san in an:
# sNodes = [san["name"].value()]
# nodeTreeItem = QTreeWidgetItem()
# nodeTreeItem.setText(0, sNodes)


self.nodeTree = QTreeWidget()
self.nodeTree.setSelectionMode(QAbstractItemView.MultiSelection)
self.nodeTree.setSortingEnabled(1)

self.nodeTree.headerItem().setText(0, "Name")
self.nodeTree.headerItem().setText(1, "Label")
self.nodeTree.headerItem().setText(2, "Status")

def listAllNodes():
self.nodeTree.clear()
listNodeName = []
selNodes = nuke.allNodes()
for san in selNodes:
sNodes = [san["name"].value()]
QTreeWidgetItem(self.nodeTree, sNodes)
listNodeName.append(san)

# def listAllNodes():
# self.nodeList.clear()
# an = nuke.allNodes()
# for san in an:
# sNodes = san["name"].value()
# self.nodeList.addItem(sNodes)
# print sNodes

self.saperator = QFrame()
self.saperator.setFrameStyle(QFrame.HLine)

self.saperator2 = QFrame()
self.saperator2.setFrameStyle(QFrame.HLine)

self.nodes = QPushButton()
self.nodes.setText("List Node(s)")
self.nodes.clicked.connect(list_selected_nodes)


self.nodesAll = QPushButton()
self.nodesAll.setText("List All Nodes")
self.nodesAll.clicked.connect(listAllNodes)

self.Line = QLineEdit()
self.Line.setText("1")
self.Line.setFixedWidth(40)


self.mixLabel = QLabel()
self.mixLabel.setText("Mix Value:")

self.ok = QLabel()
self.ok.setText("->")


self.setLabelSelected = QLineEdit()
self.setLabelSelected.setPlaceholderText("You can input 'Label' selected node(s) at sametime!")


def setMixValue():
selectedNodes = nuke.selectedNodes()
for i in selectedNodes:
i["mix"].setValue(float(self.Line.text()))
i["label"].setValue(str("mix = [value mix]"))

def setLabelValue():
for n in nuke.selectedNodes():
n["label"].setValue(str(self.setLabelSelected.text()))

def diEnNode(state):
if state == Qt.Checked:
for d in nuke.selectedNodes():
d["disable"].setValue(1)
self.AktivPasivCh.setStyleSheet("background-color: orange")
else:
for d in nuke.selectedNodes():
d["disable"].setValue(0)

def performanceOnDef():
nuke.startPerformanceTimers()

def performanceOffDef():
nuke.stopPerformanceTimers()


self.AktivPasivCh = QCheckBox()
self.AktivPasivCh.setText("D/E")
self.AktivPasivCh.stateChanged.connect(diEnNode)


self.labelBtn = QPushButton()
self.labelBtn.setText("Set Label")
self.labelBtn.clicked.connect(setLabelValue)

self.setMixValueBtn = QPushButton()
self.setMixValueBtn.setText("Set")
self.setMixValueBtn.clicked.connect(setMixValue)

self.nodeList = QListWidget()
self.nodeList.setAlternatingRowColors(True)


self.perFormanceInfoText = QLabel()
self.perFormanceInfoText.setText("Performance Timers: ")

self.performanceOn = QPushButton()
self.performanceOn.setText("Show")
self.performanceOn.clicked.connect(performanceOnDef)

self.performanceOff = QPushButton()
self.performanceOff.setText("Hide")
self.performanceOff.clicked.connect(performanceOffDef)


self.counterLabel = QLabel()
self.counterLabel.setText("Node Count: ")


self.masterLayout = QVBoxLayout()
self.listButtonLay = QHBoxLayout()
self.setAttrLayout = QHBoxLayout()
self.labelLayout = QHBoxLayout()
self.performanceLayout = QHBoxLayout()

self.listButtonLay.addWidget(self.nodes)
self.listButtonLay.addWidget(self.nodesAll)



self.masterLayout.addLayout(self.listButtonLay)

self.performanceLayout.addWidget(self.perFormanceInfoText)
self.performanceLayout.addWidget(self.performanceOn)
self.performanceLayout.addWidget(self.performanceOff)




self.masterLayout.addWidget(self.nodeTree)
# self.masterLayout.addWidget(self.nodeList)
self.masterLayout.addWidget(self.counterLabel)
self.masterLayout.addWidget(self.saperator)
self.masterLayout.addLayout(self.setAttrLayout)

self.masterLayout.addLayout(self.labelLayout)
self.setAttrLayout.addWidget(self.mixLabel)
self.setAttrLayout.addWidget(self.Line)
self.setAttrLayout.addWidget(self.ok)
self.setAttrLayout.addWidget(self.setMixValueBtn)
self.setAttrLayout.addWidget(self.AktivPasivCh)
self.labelLayout.addWidget(self.setLabelSelected)
self.labelLayout.addWidget(self.labelBtn)


self.masterLayout.addLayout(self.performanceLayout)






self.setLayout(self.masterLayout)


def start():
start.ui = f_modifier()
start.ui.setWindowFlags(Qt.WindowStaysOnTopHint)
start.ui.setWindowTitle("F: Modifier")
start.ui.show()



sadece treeWidget işlem satırı ise aşağıdaki gibi:

self.nodeTree = QTreeWidget()
self.nodeTree.setSelectionMode(QAbstractItemView.MultiSelection)
self.nodeTree.setSortingEnabled(1)

self.nodeTree.headerItem().setText(0, "Name")
self.nodeTree.headerItem().setText(1, "Label")
self.nodeTree.headerItem().setText(2, "Status")

def listAllNodes():
self.nodeTree.clear()
listNodeName = []
selNodes = nuke.allNodes()
for san in selNodes:
sNodes = [san["name"].value()]
QTreeWidgetItem(self.nodeTree, sNodes)
listNodeName.append(san)



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.