나는 며칠 동안 아무런 도움없이이 작업을 해왔으므로 잘만 도와 줄 수 있습니다.클릭 행 색상 변경 클릭 PyQt
나는이 그것의 같은 데이터 기능이있는 사용자 정의 QSqlTableModel
있어 : 그것의
def data(self, index, role):
#Formats Cells according to data in them
if role == QtCore.Qt.TextAlignmentRole:
if index.column() == 2:
text = QtSql.QSqlTableModel.data(self, self.index(index.row(), 2), QtCore.Qt.DisplayRole)
if text.split():
if not re.search(r'start|Z[NARXTFEISL]|gv', text.split()[0], re.I):
return QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop
else: return QtCore.Qt.AlignLeft
else: pass
else: return QtCore.Qt.AlignLeft
if role == QtCore.Qt.BackgroundRole:
if 'MILESTONE' in QtSql.QSqlTableModel.data(self, self.index(index.row(), 2), QtCore.Qt.DisplayRole):
return QtGui.QBrush(QtCore.Qt.yellow)
return QtSql.QSqlTableModel.data(self, index, role)
없음은 BackgroundRole
블록을 제외하고는 질문에 정말 관련이 없습니다. 내가 바로 tableview
상황에 맞는 메뉴를 클릭하면 난 할 노력하고있어 것은이 나타납니다 :
menu = QMenu()
stepx = menu.addAction('Mark Step as Executed')
stepdx = menu.addAction('Clear Step Execution')
action = menu.exec_(self.tableView.mapToGlobal(pos))
index = self.model.index(self.tableView.rowAt(pos.y()), 2)
if action == stepx:
logging.info(' Executed Step: ' + str(self.tableView.rowAt(pos.y()) + 1))
self.model.setData(index, QtCore.QVariant(QtGui.QBrush(QtCore.Qt.red)), QtCore.Qt.BackgroundRole)
나는 내 상황에 맞는 메뉴에서 "Mark Step as Executed"
을 클릭 할 때 할 노력하고있어 모든, 나는 행을 원하는 (또는 심지어 셀, 나는이 시점에서 무엇이든 가져갈 것입니다.) 빨간색으로 바꿉니다.
내가하고있는 일이 아무 것도 작동하지 않고 누군가가 나를 도울 수 있기를 바라고 있습니다.
감사합니다. 이것은 실제로 색상을 변경한다는 의미에서 작동하며, 색상을 되돌릴 수 있다는 것이 좋습니다. 그러나 전체 테이블을 빨간색으로 변경하는 것 같습니다. 선택한 행만이 아닙니다. 왜 그랬을까요? – aseylys
정말입니까? 내 테스트에서 선택한 행을 변경하고 다음 예제를 실행하여 동일한 오류가 있으면 알려주십시오. https://gist.github.com/eyllanesc/150e981878122e171bd25dc470781a87 – eyllanesc
프로젝트를 공유하여 내가 만든 위치를 확인하면 실수. 내 대답이 도움이된다면 올바른 것으로 표시하는 것을 잊지 마시기 바랍니다. – eyllanesc