Firstly, can you be a little more specific about what you want to see when
you say "real time"? Do you mean you want the effects of changing colors in
the combo box to immediately apply, whereas right now you have to click a
button? Or are you saying you want feedback from Maya to update your GUI?

If you are looking to have your combo box apply the change immediately, you
could look at wiring up the signal for when a combo box changes:
http://pyside.github.io/docs/pyside/PySide/QtGui/QComboBox.html#PySide.QtGui.PySide.QtGui.QComboBox.currentIndexChanged

Justin

On Tue, Oct 4, 2016 at 8:32 AM yann19 <[email protected]> wrote:

> Hi all, I was wondering if someone could kindly direct me on this and
> perhaps how I should do it?
>
> Say if I have a model (with lots of polygon), and I am trying to grab some
> specified pieces of geometry that has '_defaultPaint_' embedded in their
> naming...
>
> While I can use cmds.ls('*_defaultPaint_*') to filter them out, at the
> same time, I would also like to grab its shaders (each piece of geo has its
> own shader) in which I will have this UI that shows a list of colors, and
> as I change the options within a combobox perhaps, eg. from their default
> red color, and I selected 'yellow', it will reflect the changes in their
> shaders but as well as in the viewport real-time.
>
> How should I approach in doing so?
>
> Currently for my UI, I have a QTableWidget of 2 columns, first column that
> denotes the models in the scene, and the second column populated by a
> QComboBox is filled with the color options stemming from a json file that
> specifically states the different colors given to the model.
> So far, I have succedded in populating thses 2 columns, however getting
> the changes to be in effect in real-time is lacking for me.
> I can try using a QPushButton and hardcode it, along with the attributes
> of the color etc but that is not effective and not really real-time since
> it can only happens upon a click on the push button.
>
> Any insights?
>
> This is a portion of the code that I have did..
>
>
> def get_all_mesh():
>     all_mesh = cmds.listRelatives(cmds.ls(type = 'mesh'), parent=True)
>     # Result: [u'pCube1', u'pSphere1', u'pPlane1'] #
>     return all_mesh
>
>
> def get_color(node_name):
>     # checks if the node_name exists in the json file
>     with open('/Desktop/colors.json') as data_file:
>         data = json.load(data_file)
>
>         items = set()
>         for index, name in enumerate(data):
>             # if the name is in the json, it will states the color
>             if node_name in name:
>                 for item in (data[name]):
>                     #print "{0} - {1}".format(name, item)
>                     items.add(item)
>     return items
>
>
>
>
> class testTableView(QtGui.QDialog):
>     def __init__(self, parent=None):
>         QtGui.QDialog.__init__(self, parent)
>         self.setWindowTitle('Color Test')
>         self.setModal(False)
>
>
>         self.all_mesh = get_all_mesh()
>
>
>         # Build the GUI
>         self.init_ui()
>         self.populate_data()
>
>
>
>
>     def init_ui(self):
>         # Table setup
>         self.mesh_table = QtGui.QTableWidget()
>         self.mesh_table.setRowCount(len(self.all_mesh))
>         self.mesh_table.setColumnCount(3)
>         self.mesh_table.setHorizontalHeaderLabels(['Mesh Found', 'Color
> for Mesh'])
>         self.md_insert_color_btn = QtGui.QPushButton('Apply color')
>
>
>         # Layout
>         self.layout = QtGui.QVBoxLayout()
>         self.layout.addWidget(self.mesh_table)
>         self.layout.addWidget(self.md_insert_color_btn)
>         self.setLayout(self.layout)
>
>
>     def populate_data(self):
>         geo_name = self.all_mesh
>         for row_index, geo_item in enumerate(geo_name):
>             new_item = QtGui.QTableWidgetItem(geo_item)
>             # Add in each and every mesh found in scene and append them
> into rows
>             self.mesh_table.setItem(row_index, 0, new_item)
>
>             geo_exclude_num = ''.join(i for i in geo_item if not i.isdigit
> ())
>             color_list = get_color(geo_exclude_num)
>
>
>             # Insert in the color
>             combobox = QtGui.QComboBox()
>             #color_list = get_color()
>             combobox.addItems(list(color_list))
>             self.mesh_table.setCellWidget(row_index, 1, combobox)
>
>
>
> # To opent the dialog window
> dialog = testTableView()
> dialog.show()
>
>
> I have read somewhere that using mvc (model/ view/ controller) may help?
> but how do i start off?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/eeb630dc-5e5e-4b0c-b2da-4129effac47f%40googlegroups.com
> <https://groups.google.com/d/msgid/python_inside_maya/eeb630dc-5e5e-4b0c-b2da-4129effac47f%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA1UyVyYWVAVrtqnZh0cZmrWrSUm%3DTEjRFCADLBMaW1VKQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to