- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 pyform控件只接受 url 作为输入。
为了实现这一点,我从 ControlText
派生了我的类,并添加了一个按键事件处理程序,用于根据正则表达式测试当前值。
现在我想根据 style.css
中所示的变量以某种方式更改控件的外观。
控件.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+)?@)?(((([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
样式.css
#_urlinput[valid="true"] {
background-color: red;
}
我更喜欢用 css 解决它,但每个解决方案都值得赞赏。
最佳答案
动态样式基于 QPropertys
,可以使用 setProperty
进行设置,CSS 选择器类似于 [propertyname=propertyvalue]
代码:
import sys
import pyforms
from pyforms.Controls import ControlText
import re
class ControlUrl(ControlText):
def __init__(self, *args, regex="^((https?:)?\/\/)?(\w+(:\w+)?@)?(((([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.~!+%,*:@-])?$", **kwargs):
self._regex = regex
super(ControlUrl, self).__init__(*args, **kwargs)
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):
self._valid = self._pattern.search(self.value) != None
base = self.form.lineEdit
base.setProperty("valid", self._valid)
#without these lines the style is not applied
base.style().unpolish(base)
base.style().polish(base)
CSS:
QLineEdit[valid=false] {
border: 1px solid #991903;
border-radius: 4px;
}
QLineEdit[valid=false]:focus {
border-color: #db391c;
}
更多信息:
关于python - pyforms - 基于变量值的动态样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45839338/
我正在使用 Pyforms 生成表单。但是,我必须在我的 pyforms 中使用 stylesheet/css/html-api 。我还按照此 link 给出的步骤进行操作。我想知道如何添加 css
我正在开发一个 pyform控件只接受 url 作为输入。 为了实现这一点,我从 ControlText 派生了我的类,并添加了一个按键事件处理程序,用于根据正则表达式测试当前值。 现在我想根据 st
这是我的 python 文件: import pyforms import pyside from pyforms import BaseWidget from pyform
Pyforms library: WinError5 Access is denied. 我一直使用pip在命令窗口中免费安装所有库hassel。但是当我尝试安装 pyforms 库时,出现以下错误:
我做了一个pyforms应用程序并尝试在 settings.py 中添加设置,但它们被忽略了。 settings.py PYFORMS_STYLESHEET = "style.css" PYFORMS
在我的 Raspberry Pi 3 上安装 pyforms 后,我尝试运行我在 readthedocs 上找到的示例, 但应用程序抛出 AttributeError (我同时尝试了 python2
我是一名优秀的程序员,十分优秀!