[Release] Farb-Converter

 Hey,
ich möchte euch hier meinen Farbconverter zur Verfügung stellen. Ich habe den Konverter gebraucht, damit die RGB Codes im Client ordentlich dargestellt werden können. Im Grunde muss man jeden Wert eines RGB Codes durch 255 teilen, um an den "FLOAT" Wert zu gelangen. Das soll dieses kleine Skript eben machen.

Ist in Python3 geschrieben mit einer kleinen GUI: (Ihr benötigt Python und PyQt5!)

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QLabel, QPushButton, QColorDialog, QMessageBox

from PyQt5.QtGui import QColor


class FarbkonverterApp(QWidget):

    def __init__(self):

        super().__init__()


        self.setWindowTitle("RGB-zu-Float Farbkonverter - [Patrick]")

        self.setGeometry(100, 100, 300, 300)


        layout = QVBoxLayout()


        self.rgb_input = QLineEdit(self)

        self.rgb_input.setPlaceholderText("RGB eingeben (z. B. 255, 0, 0)")

        layout.addWidget(self.rgb_input)


        self.hex_input = QLineEdit(self)

        self.hex_input.setPlaceholderText("Hex eingeben (#RRGGBB)")

        layout.addWidget(self.hex_input)


        self.result_input = QLineEdit(self)

        self.result_input.setReadOnly(True)

        layout.addWidget(self.result_input)


        konvertieren_button = QPushButton("Konvertieren", self)

        konvertieren_button.clicked.connect(self.konvertiere_farbe)

        layout.addWidget(konvertieren_button)


        kopieren_button = QPushButton("Float-Werte kopieren", self)

        kopieren_button.clicked.connect(self.in_zwischenablage_kopieren)

        layout.addWidget(kopieren_button)


        farbwahl_button = QPushButton("Farbtabelle", self)

        farbwahl_button.clicked.connect(self.farbwaehler_oeffnen)

        layout.addWidget(farbwahl_button)


        self.setLayout(layout)


    def konvertiere_farbe(self):

        rgb_text = self.rgb_input.text().strip()

        hex_text = self.hex_input.text().strip()


        try:

            if rgb_text:

                r, g, b = map(int, rgb_text.split(','))

                if 0 <= r <= 255 and 0 <= g <= 255 and 0 <= b <= 255:

                    r_float = r / 255.0

                    g_float = g / 255.0

                    b_float = b / 255.0

                    self.result_input.setText(f"RGB als Floats: ({r_float:.3f}, {g_float:.3f}, {b_float:.3f})")

                else:

                    self.result_input.setText("Ungültige RGB-Werte. Bereich: 0-255.")

            elif hex_text.startswith('#'):

                hex_text = hex_text[1:]

                if len(hex_text) == 6 and all(c in "0123456789ABCDEFabcdef" for c in hex_text):

                    r, g, b = int(hex_text[0:2], 16), int(hex_text[2:4], 16), int(hex_text[4:6], 16)

                    r_float = r / 255.0

                    g_float = g / 255.0

                    b_float = b / 255.0

                    self.result_input.setText(f"RGB als Floats: ({r_float:.3f}, {g_float:.3f}, {b_float:.3f})")

                else:

                    self.result_input.setText("Ungültiges Hex-Format. Muss #RRGGBB sein.")

            else:

                self.result_input.setText("Bitte RGB- oder Hex-Wert eingeben.")

        except Exception as e:

            self.result_input.setText(f"Fehler: {str(e)}")


    def in_zwischenablage_kopieren(self):

        result_text = self.result_input.text()

        if result_text:

            if "(" in result_text and ")" in result_text:

                start = result_text.find("(")

                end = result_text.find(")")

                value = result_text[start:end + 1]

                QApplication.clipboard().setText(value)

                QMessageBox.information(self, "Kopiert!", "Float-Werte in die Zwischenablage kopiert.")

            else:

                QMessageBox.warning(self, "Ungültiges Format", "Kein gültiger Float-Wert gefunden.")

        else:

            QMessageBox.warning(self, "Kein Wert", "Kein Wert zum Kopieren vorhanden.")


    def farbwaehler_oeffnen(self):

        color = QColorDialog.getColor()


        if color.isValid():

            rgb = color.rgb()

            r, g, b = (rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF

            hex_color = color.name()


            self.rgb_input.setText(f"{r}, {g}, {b}")

            self.hex_input.setText(hex_color)


            r_float = r / 255.0

            g_float = g / 255.0

            b_float = b / 255.0

            self.result_input.setText(f"RGB als Floats: ({r_float:.3f}, {g_float:.3f}, {b_float:.3f})")


app = QApplication(sys.argv)

fenster = FarbkonverterApp()

fenster.show()

sys.exit(app.exec_())


Kommentare