Ich entwickle eine pyform Steuerung, die nur URLs als Eingabe akzeptiert.pyforms - dynamisches Styling basierend auf Variablenwert
Um dies zu erreichen, derivierte ich meine Klasse von ControlText
und fügte einen keypress Event-Handler hinzu, der den aktuellen Wert gegen einen regulären Ausdruck testet.
Jetzt möchte ich irgendwie das Aussehen der Steuerelemente basierend auf einer Variablen wie in style.css
gezeigt ändern.
Controls.py
import pyforms
from pyforms.Controls import ControlText
import re
class ControlUrl(ControlText):
def __init__(self, label="", default=None, helptext=None, regex="^((https?:)?\/\/)?(\w+(:\w+)[email protected])?(((([a-zA-Z\d]{1,2}|[a-zA-Z\d][\w\-]{0,62}[a-zA-Z\d])\.){1,}[\w\-]{2,6})|(\d{1,3}(\.\d{1,3}){3})|([\d:]{2,39}))(:\d{2,6})?(\/[\w.~!+,*:@%-]+)*\/?(\?([\w.~!+%,*:@-]+(=[\w.~!+%,*:@-]+)?)(&[\w.~!+%,*:@-]+(=[\w.~!+%,*:@-]+)?)*)?(#[\w.~!+%,*:@-])?$"):
self._regex = regex
super(ControlUrl, self).__init__(label, default, helptext)
def init_form(self):
self._pattern = re.compile(self._regex)
self.key_pressed_event = self.__key_pressed
super(ControlUrl, self).init_form()
def __key_pressed(self, event):
is_url = self._pattern.search(self.value) != None
self.valid = is_url
style.css
#_urlinput[valid="true"] {
background-color: red;
}
Ich würde es vorziehen, sie mit cs Lösung s aber jede Lösung wird geschätzt.