項目を選択したときに、選択色を変えたいと思います。しかし、QTableWidget::item:selected{ background-color: }
は、選択されたアイテムが1つだけの場合にのみ機能します。そうでない場合、選択されたアイテムの選択色はすべて同じになります。それで、すべての商品に個別の選択色を付ける方法はありますか?PyQt5でQTableWidgetの各項目の選択色を設定するには
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.MainWindow=MainWindow
self.MainWindow.resize(300, 100)
self.centralwidget = QtWidgets.QWidget(self.MainWindow)
self.MainWindow.setCentralWidget(self.centralwidget)
"""table """
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.insertRow(0)
self.tableWidget.setColumnCount(2)
self.tableWidget.setItem(0,0,QtWidgets.QTableWidgetItem("red"))
self.tableWidget.setItem(0,1,QtWidgets.QTableWidgetItem("blue"))
self.tableWidget.itemSelectionChanged.connect(self.ChangeSelectionColor)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def ChangeSelectionColor(self):
try:
for item in self.tableWidget.selectedItems():
col=item.column()
self.tableWidget.setStyleSheet("QTableWidget::item:selected{ background-color: %s }"%color_list[col])
except UnboundLocalError:
pass
if __name__ == "__main__":
import sys
color_list=['red','blue']
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
一つの選択が良い作品。
複数選択だけで選択したすべての項目に色を適用します。私は、一度選択された左側のものを赤色にしたい。
色はどのように変わるのですか? – eyllanesc
@eyllanesc 'main'で定義された' color_list'です。 column = iの場合、その選択色は 'color_list [i]'でなければなりません。 – user6456568
私はあなたが私の質問を理解していないと思う、私はあなたが2行3列のテーブルを持って、どのような色になると言う、各セルは、それが選択されている必要がありますか? – eyllanesc