2 # A minimal color picker that uses the PyQt color picker
3 # Usage: pickcolor [color]
4 # Result is printed to stdout
8 from PyQt5.QtWidgets import QApplication, QWidget, QColorDialog
9 from PyQt5.QtGui import QColor
11 PyQt5.QtWidgets.QApplication.setAttribute(PyQt5.QtCore.Qt.AA_EnableHighDpiScaling, True) #enable highdpi scaling
12 PyQt5.QtWidgets.QApplication.setAttribute(PyQt5.QtCore.Qt.AA_UseHighDpiPixmaps, True) #use highdpi icons
14 class Picker(QWidget):
15 def __init__(self, color='#888888'):
17 self.setWindowTitle('Color picker')
19 m = re.match(r'(rgb)?\((\d+), *(\d+), *(\d+)\)', color)
21 prefix = m.group(1) or ''
22 color = QColorDialog.getColor(initial=QColor(int(m.group(2)), int(m.group(3)), int(m.group(4))))
25 if color.startswith('#'):
29 color = QColorDialog.getColor(initial=QColor(color))
34 s = f"{prefix}({color.red()}, {color.green()}, {color.blue()})"
36 s = f"{prefix}{color.name().lstrip('#')}"
42 if __name__ == '__main__':
43 app = QApplication(sys.argv[:1])
44 colors = sys.argv[1:] if sys.argv[1:] or sys.stdin.isatty() else [sys.stdin.read().strip()]