Dec-27-2018, 04:44 PM
I'm working on a screen that displays a QTableWidget. Each row in the table has a string 'Part Role Name' followed by 5 checkboxes. The number of rows in the table change based on Json results returned from a web API call. So the table is sized and the rows added dynamically. I have a class that represents each table row. I'm having trouble wiring up a given checkbox to its corresponding field for the statechanged event. I can tell the event is firing and what state it is changing to, I just don't know which field to update. Here is my Python class:
State Changed. It is now True
<PartRoleShadow.PartRoleShadow object at 0x038180B0>
State Changed. It is now False
<PartRoleShadow.PartRoleShadow object at 0x038180B0>
from PyQt4 import QtCore, QtGui class PartRoleShadow(object): """Part role shadow settings for rendering""" def __init__(self, name, caster, catcher, excluded, hidden, render): self.part_role_name = name self.shadow_caster = caster self.shadow_catcher = catcher self.excluded = excluded self.hidden = hidden self.render = render def _widget(self, flag): cell_widget = QtGui.QWidget() chk_bx = QtGui.QCheckBox() chk_val = QtCore.Qt.Unchecked if flag: chk_val = QtCore.Qt.Checked chk_bx.setCheckState(chk_val) chk_bx.stateChanged.connect(self.set_value) lay_out = QtGui.QHBoxLayout(cell_widget) lay_out.addWidget(chk_bx) lay_out.setAlignment(QtCore.Qt.AlignCenter) lay_out.setContentsMargins(0, 0, 0, 0) cell_widget.setLayout(lay_out) return cell_widget def set_value(self, state): if state == QtCore.Qt.Checked: bvalue = True else: bvalue = False print("State Changed. It is now " + str(bvalue)) print(self) def get_shadow_caster_checkbox_widget(self): return self._widget(self.shadow_caster) def get_shadow_catcher_checkbox_widget(self): return self._widget(self.shadow_catcher) def get_excluded_checkbox_widget(self): return self._widget(self.excluded) def get_hidden_checkbox_widget(self): return self._widget(self.hidden) def get_render_checkbox_widget(self): return self._widget(self.render)Print results from checking/unchecking a box:
State Changed. It is now True
<PartRoleShadow.PartRoleShadow object at 0x038180B0>
State Changed. It is now False
<PartRoleShadow.PartRoleShadow object at 0x038180B0>