将scss文件编译为有效的qt样式表。

qtsass的Python项目详细描述


qtsas:将scss文件编译为qt样式表

License - MITOpenCollective BackersJoin the chat at https://gitter.im/spyder-ide/public
Travis build statusAppVeyor build statusCodecov coverageScrutinizer Code Quality

版权所有©2015 Yann Lanthony

版权所有©2017–2018 Spyder项目贡献者

概述

SASS为css带来了无数令人惊叹的特性。 除了在web开发中使用,css也是设计基于qt的桌面应用程序的方式。 然而,qt的css有一些变体,这些变体阻止了sass编译器的直接使用。

这个工具的目的是通过处理这些变化来填补sass和qt css之间的空白。

qt的css特性

qtsas的目标是能够基于100%有效的sass文件生成qt css样式表。 这就是它如何处理qt的细节,以及如何修改css样式表以使用qtsas。

“!”在选择器中

qt允许根据窗口小部件的状态定义其样式,如下所示:

QLineEdit:enabled{...}

但是,“not”状态是有问题的,因为它在选择器的名称中引入了一个感叹号,这是无效的sass/css:

QLineEdit:!editable{...}

qtsas允许“!”在选择器的名称中,sass文件被预处理,任何出现的:!都被:_qnot_替换(对于“qt not”)。 但是,使用此功能会阻止拥有100%有效的sass文件,因此将来对!的支持可能会改变。 这可以由直接使用sass文件中的_qnot_关键字来代替:

QLineEdit:_qnot_editable{/* will generate QLineEdit:!editable { */...}

qline参数

qlineargradient函数还有一个无效的css语法。

qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0.1blue,stop:0.8green)

为了支持qlineargradient,qtsas提供了qlineargradient函数的预处理器和sass实现。上述qss语法将替换为以下内容:

qlineargradient(0,0,0,1,(0.1blue,0.8green))

您也可以直接在qtsas中使用此语法。

qlineargradient(0, 0, 0, 1, (0.1 blue, 0.8 green))
# the stops parameter is a list, so you can also use variables:
$stops = 0.1 blue, 0.8 green
qlineargradient(0, 0, 0, 0, $stops)

qrgba

qt的rgba:

rgba(255,128,128,50%)

替换为css rgba:

rgba(255,128,128,0.5)

可执行的用法

要将sass样式表编译为qt兼容的css文件:

# If -o is omitted, output will be printed to console
qtsass style.scss -o style.css

要使用监视模式并在每次保存文件时自动重新编译样式表:

# If -o is omitted, output will be print to console
qtsass style.scss -o style.css -w

将包含sass样式表的目录编译为qt兼容的css文件:

qtsass ./static/scss -o ./static/css

也可以使用监视模式监视整个目录的更改。

qtsass ./static/scss -o ./static/css -w

API方法

compile(string, **kwargs)

将qtsas源代码整合并编译成css。

此函数在将qtsas传递给 编译。您提供的任何关键字参数都将与 qtsas的默认关键字参数并传递给sass.compile。

示例:

>>> import qtsass
>>> qtsass.compile("QWidget {background: rgb(0, 0, 0);}")
QWidget {background:black;}

参数:

  • 字符串:qtsas源代码以符合和编译。
  • kwargs:传递给sass.compile的关键字参数

返回:

  • 符合qt的css字符串

compile_filename(input_file, dest_file, **kwargs)

编译qtsas文件并将其保存为qt兼容的css。

示例:

>>> import qtsass
>>> qtsass.compile_filename('dummy.scss', 'dummy.css')

参数:

  • 输入文件:qtsas文件的路径。
  • dest_file:目标qt兼容css文件的路径。
  • kwargs:传递给sass.compile的关键字参数

compile_filename(input_file, output_file, **kwargs)

编译qtsas文件并将其保存为qt兼容的css。

示例:

>>> import qtsass
>>> qtsass.compile_filename('dummy.scss', 'dummy.css')

参数:

  • 输入文件:qtsas文件的路径。
  • 输出文件:写入qt兼容css的路径。
  • kwargs:传递给sass.compile的关键字参数

compile_dirname(input_dir, output_dir, **kwargs)

编译包含子目录的目录中的qtsas文件。

>>> import qtsass
>>> qtsass.compile_dirname("./scss", "./css")

参数:

  • input_dir:包含qtsas文件的目录的路径。
  • output_dir:将编译的qt兼容css文件写入的目录。
  • kwargs:传递给sass.compile的关键字参数

监视(源,目标,编译器=无,递归=真):

监视源文件或目录,修改时编译qtsas文件。

编译器函数默认情况下,当源是文件时编译文件名 当源是目录时编译目录名。

参数:

  • source:源qtsas文件或目录的路径。
  • 目标:输出css文件或目录的路径。
  • 编译器:编译函数(可选)
  • 递归:如果为true,则监视子目录(默认值:true)。

返回:

  • watchdog.observer

贡献

欢迎大家贡献!

赞助商

Spyder及其子项目的资金来源于

QuansightNumfocus

以及通过Open Collective

Sponsors

请考虑成为赞助商!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓软件包与java代码中的类型冲突   谷歌应用引擎Java还是Python?   如何将java bean传递到jsp页面,以便jqQrid使用json显示?   在编译kotlin代码时,kotlin编译器如何处理java代码?   java不准确地更改JTextPane中的文本颜色   反应式编程AWS SDK v2 SdkAsyncHttpClient使用Java 11 Java实现。网http HttpClient sendAsync   在Spring AMQP中,java根据队列的消费者计数来消费队列   java在ArrayList的add()方法中创建新对象会导致内存泄漏。我能做什么不同的事?   未将java BufferedReader特定行追加到字符串   用于聊天程序格式化的java JavaFX 2文本区   java如何从netbeans项目生成exexutable文件?   swing如何在Java中使用JButton操作调整JWindow的宽度和高度?   java有没有办法在spring boot中使用jasypt aes加密和解密?   java通过使用泛型如何将映射作为集合传递给方法?   java如何替换不推荐使用的构造函数DynamoDBMapperFieldModel