I have this simple app:
file: untitled.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(1160, 574)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.player_list_table = QtWidgets.QTableWidget(Dialog)
self.player_list_table.setMinimumSize(QtCore.QSize(0, 850))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.HighlightedText, brush)
brush = QtGui.QBrush(QtGui.QColor(170, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.HighlightedText, brush)
brush = QtGui.QBrush(QtGui.QColor(170, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.HighlightedText, brush)
brush = QtGui.QBrush(QtGui.QColor(170, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush)
self.player_list_table.setPalette(palette)
self.player_list_table.setFocusPolicy(QtCore.Qt.NoFocus)
self.player_list_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.player_list_table.setAlternatingRowColors(True)
self.player_list_table.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.player_list_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.player_list_table.setRowCount(20)
self.player_list_table.setObjectName("player_list_table")
self.player_list_table.setColumnCount(2)
item = QtWidgets.QTableWidgetItem()
self.player_list_table.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.player_list_table.setHorizontalHeaderItem(1, item)
self.player_list_table.horizontalHeader().setCascadingSectionResizes(False)
self.player_list_table.horizontalHeader().setHighlightSections(False)
self.player_list_table.horizontalHeader().setMinimumSectionSize(260)
self.player_list_table.horizontalHeader().setSortIndicatorShown(False)
self.player_list_table.horizontalHeader().setStretchLastSection(True)
self.player_list_table.verticalHeader().setHighlightSections(False)
self.gridLayout.addWidget(self.player_list_table, 0, 0, 1, 1)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.player_list_table.setSortingEnabled(False)
item = self.player_list_table.horizontalHeaderItem(0)
item.setText(_translate("Dialog", "Αλλαγή θέσης"))
item = self.player_list_table.horizontalHeaderItem(1)
item.setText(_translate("Dialog", "Θέση αρχείου"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
file: main.py
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from untitled import Ui_Dialog
class Main:
def __init__(self):
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
ui.player_list_table.setRowCount(0)
for i in range(0,20):
ui.player_list_table.insertRow(i)
#Title
title_item = QtWidgets.QTableWidgetItem("Title text")
title_item.setTextAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter | QtCore.Qt.Alignment(QtCore.Qt.TextWordWrap))
ui.player_list_table.setItem(i,0,title_item)
#Image
image_frame = QtWidgets.QFrame()
image_frame.setStyleSheet("QFrame{\nborder:none;background:transparent;\n}")
gridLayout = QtWidgets.QGridLayout(image_frame)
image_title = QtWidgets.QLabel(image_frame)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(image_title.sizePolicy().hasHeightForWidth())
image_title.setSizePolicy(sizePolicy)
image_title.setAlignment(QtCore.Qt.AlignCenter)
image_title.setWordWrap(True)
image_title.setStyleSheet("QLabel{\nborder:none;background:transparent;\n}")
gridLayout.addWidget(image_title, 1, 0, 1, 3)
image = QtWidgets.QLabel(image_frame)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(image.sizePolicy().hasHeightForWidth())
image.setSizePolicy(sizePolicy)
image.setMinimumSize(QtCore.QSize(150, 150))
image.setMaximumSize(QtCore.QSize(150, 150))
image.setText("")
image.setScaledContents(True)
gridLayout.addWidget(image, 0, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
gridLayout.addItem(spacerItem, 0, 2, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
gridLayout.addItem(spacerItem1, 0, 0, 1, 1)
image_title.setText("Image title text")
ui.player_list_table.setCellWidget(i,1,image_frame)
ui.player_list_table.resizeRowsToContents()
ui.player_list_table.resizeColumnsToContents()
ui.player_list_table.selectRow(0)
sys.exit(app.exec_())
if __name__=="__main__":
main = Main()
The problem is that when i run: python main.py
and then highlight a row, the text color in the first column be white, but the text color in the second column be black. :/
What qss selector may i use for this situation?
I used the currentCellChanged signal to find which row is selected. Then when this signal is emitted then i change the qss of image title Label.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.