Skip to content

Instantly share code, notes, and snippets.

@eyllanesc
Created September 8, 2017 10:12
Show Gist options
  • Save eyllanesc/fc53a05025dedb979905a21c7cc8ce3f to your computer and use it in GitHub Desktop.
Save eyllanesc/fc53a05025dedb979905a21c7cc8ce3f to your computer and use it in GitHub Desktop.
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class TableWidget(QTableWidget):
def __init__(self, *args, **kwargs):
QTableWidget.__init__(self, *args, **kwargs)
class StyleDelegateForQTableWidget(QStyledItemDelegate):
color_default = QColor("#aaedff")
def paint(self, painter, option, index):
if option.state & QStyle.State_Selected:
option.palette.setColor(QPalette.HighlightedText, Qt.black)
color = self.combineColors(self.color_default, self.background(option, index))
option.palette.setColor(QPalette.Highlight, color)
QStyledItemDelegate.paint(self, painter, option, index)
def background(self, option, index):
item = self.parent().itemFromIndex(index)
if item:
if item.background() != QBrush():
print("twi")
return item.background().color()
if self.parent().alternatingRowColors():
if index.row() % 2 == 1:
return option.palette.color(QPalette.AlternateBase)
return option.palette.color(QPalette.Base)
@staticmethod
def combineColors(c1, c2):
c3 = QColor()
c3.setRed((c1.red() + c2.red()) / 2)
c3.setGreen((c1.green() + c2.green()) / 2)
c3.setBlue((c1.blue() + c2.blue()) / 2)
return c3
self.setItemDelegate(StyleDelegateForQTableWidget(self))
class MyDatabase(TableWidget):
def __init__(self, parent=None):
super(MyDatabase, self).__init__(parent)
self.setObjectName('myDatabase_UI')
# ---------------------------------------------------------------------------#
self.setColumnCount(8)
self.setRowCount(8)
self.setAlternatingRowColors(True)
horizontalHeader = ["ID", "Artist", "Date", "Time", "Shot", "Mastershot", "Error_Notes", "Status"]
self.setHorizontalHeaderLabels([each for each in horizontalHeader])
self.setItem(0, 7, QTableWidgetItem(str("Sent for Still")))
self.setItem(1, 7, QTableWidgetItem(str("Ready to Check")))
self.setItem(2, 7, QTableWidgetItem(str("To Start")))
self.setItem(3, 7, QTableWidgetItem(str("WIP")))
self.setItem(4, 7, QTableWidgetItem(str("Revise")))
self.setItem(5, 7, QTableWidgetItem(str("Approved")))
self.setItem(6, 7, QTableWidgetItem(str("On Hold")))
self.setItem(7, 7, QTableWidgetItem(str("Retake")))
"""cb = QComboBox(self)
self.setCellWidget(1, 1, cb)"""
self.setItem(0, 0, QTableWidgetItem(str("Retake")))
rows = range(8)
for row in rows:
if self.horizontalHeaderItem(7).text() == "Status":
if self.item(row, 7).text() == 'Sent for Still':
self.item(row, 7).setBackground(QColor(180, 220, 255))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'Ready to Check':
self.item(row, 7).setBackground(QColor(85, 255, 200))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'To Start':
self.item(row, 7).setBackground(QColor(255, 211, 135))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'WIP':
self.item(row, 7).setBackground(QColor(205, 200, 85))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'Revise':
self.item(row, 7).setBackground(QColor(205, 15, 5))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'Approved':
self.item(row, 7).setBackground(QColor(255, 130, 220))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'On Hold':
self.item(row, 7).setBackground(QColor(5, 15, 205))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'Retake':
self.item(row, 7).setBackground(QColor(110, 25, 20))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'Sent to Farm':
self.item(row, 7).setBackground(QColor(85, 200, 255))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
if self.item(row, 7).text() == 'Ready for Comp':
self.item(row, 7).setBackground(QColor(0, 0, 0))
self.item(row, 7).setTextColor(QColor(0, 0, 0))
self.item(row, 7).setTextAlignment(Qt.AlignCenter)
class PaletteWidget(QWidget):
t = (QPalette.Window, QPalette.WindowText, QPalette.Base,
QPalette.AlternateBase, QPalette.ToolTipBase, QPalette.ToolTipText,
QPalette.Text, QPalette.Button, QPalette.ButtonText, QPalette.BrightText,
QPalette.Light, QPalette.Midlight, QPalette.Dark, QPalette.Mid, QPalette.Shadow,
QPalette.Highlight, QPalette.HighlightedText, QPalette.Link, QPalette.LinkVisited)
names = ("Window", "WindowText", "Base", "AlternateBase", "ToolTipBase", "ToolTipText",
"Text", "Button", "ButtonText", "BrightText", "Light", "Midlight", "Dark", "Mid",
"Shadow", "Highlight", "HighlightedText", "Link", "LinkVisited")
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setLayout(QFormLayout())
self.labels = []
for name in self.names:
label = QLabel(self)
self.labels.append(label)
self.layout().addRow(name, label)
def setmPalette(self, p):
print("click")
for i, lb in enumerate(self.labels):
pal = QPalette()
pal.setColor(QPalette.Window, p.color(self.t[i]))
lb.setAutoFillBackground(True)
lb.setPalette(pal)
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = MyDatabase()
dialog.show()
sys.exit(app.exec_())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment