나는 pyqt를 처음 사용합니다. QTableWidget에서 선택한 셀의 배경색을 변경하려고합니다. 클릭 / 선택하면 색상을 변경하고 선택하지 않으면 기본 색상으로 돌아갈 수 있습니까?
또한 속성 cellClicked
은 행 번호 만 반환합니다. 행과 열 번호를 모두 얻는 방법은 무엇입니까?
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1124, 801)
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setGeometry(QtCore.QRect(30, 40, 1000, 600))
self.tableWidget.setRowCount(15)
self.tableWidget.setColumnCount(6)
self.tableWidget.setAlternatingRowColors(True)
self.tableWidget.setObjectName("tableWidget")
for i, col_name in enumerate(['symbol', 'step', 'factor', 'initial_lot', 'max_streak', 'status']):
self.tableWidget.setHorizontalHeaderItem(i, QTableWidgetItem(col_name))
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.verticalHeader().setMinimumSectionSize(20)
self.tableWidget.horizontalHeader().setStyleSheet(
"QHeaderView::section{"
"border-bottom: 1px solid #4a4848;"
"background-color:white;"
"}")
self.tableWidget.cellClicked.connect(lambda x: self.print_selected(x))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
def print_selected(self, s):
print(s)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
파이썬 3.7.6, pyqt5
QPalette.Highlight 사용
pallete = self.tableWidget.palette()
hightlight_brush = pallete.brush(QPalette.Highlight)
hightlight_brush.setColor(QColor('red'))
pallete.setBrush(QPalette.Highlight, hightlight_brush)
self.tableWidget.setPalette(pallete)
cellClicked 신호는 행과 열을 모두 전달합니다.
void QTableWidget :: cellClicked (int row, int column)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다