将click CLI转换为QT应用程序
项目描述
欢迎来到clickqt
这目前是我和一群学生共同积极开发的项目
什么是clickqt
?
clickqt
是一个Python包,它可以将click
的CLIs转换为Qt-GUIs。实际上,它将
Usage: example_cli greet [OPTIONS]
Options:
--userinfo <TEXT INTEGER DATETIME>...
--help Show this message and exit.
转换成
安装
可以从PyPI安装Python包clickqt
python -m pip install clickqt
开发安装
如果您想为clickqt
的开发做出贡献,我们建议从以下存储库进行可编辑安装
git clone git@github.com:dokempf/clickqt.git
cd clickqt
python -m pip install --editable .[tests]
完成此操作后,可以使用pytest
运行测试套件
python -m pytest
用法
clickqt
设计为允许两种使用方式
外部使用
要在外部使用clickqt
,您可以运行由安装clickqt
创建的入口点,称为clickqtfy
。有两种使用此入口点的方式
-
clickqtfy ENTRYPOINT
这种方式适用于您已安装入口点的情况。
-
clickqtfy ENTRYPOINT FUNCNAME
在没有安装入口点的情况下,您可以使用此方法,为ENTRYPOINT提供路径/文件名,并为FUNCNAME提供该文件内的函数名。
带入口点的包装
您可以通过两个步骤为clickqt
创建入口点
- 将GUI的控制作为一个变量创建(在
somepackage
包的顶级目录下名为somefile.py
的文件中)from clickqt import qt_gui_from_click import click @click.command(...) def foo(...): pass ui_handle = qt_gui_from_click(foo)
- 然后在
pyproject.toml
文件的gui_scripts
部分像这样引用ui_handle
[project.gui-scripts] gui = "somepackage.somefile:ui_handle"
安装后,您可以通过在控制台中输入gui
来运行此入口点,创建一个链接到它的桌面快捷方式等。
使用GUI信息的使用
如果您决定设计自己的click.type,如果没有提供字典形式的额外信息,它通常会映射到一个简单的文本字段。请注意,您想要调用的行为也必须由您提供,因为Qt小部件有不同的获取器和设置器函数。这意味着除了您想要的Qt小部件之外,您还必须通过元组传递自定义类型的获取器函数和设置器函数,而您的自定义类型是字典的键。
from clickqt import qt_gui_from_click
import click
@click.command(...)
def foo(...):
pass
def custom_getter(widget: "CustomWidget"):
assert isinstance(widget.widget, QSpinBox)
return widget.widget.value()
def custom_setter(widget: "CustomWidget", val):
widget.widget.setValue(val)
ui_handle = qt_gui_from_click(foo, {BasedIntParamType: (QSpinBox, custom_getter, custom_setter)})
这可以通过在参数之前的一个选项来引用
clickqtfy --custom-gui [GUI] ENTRYPOINT
clickqtfy --custom-gui [GUI] ENTRYPOINT FUNCNAME
在这种情况下,GUI可以是入口点,如带入口点的包装中所述创建,或者是您用来创建此入口点的ui_handle。有了这个,您可以选择将您自己的click类型映射到您选择的特定Qt小部件。
支持
ClickQt还支持click扩展,用于在选项组中结构click命令的选项(https://click-option-group.readthedocs.io/en/latest/)。此扩展通过为选项组生成可折叠部分来支持,以查看选项的结构。
限制
目前,clickqt仅支持click的内置功能。这意味着任何用户定义的行为(例如,自定义ParamTypes / Commands / Contexts)可能无法按预期工作。此外,clickqt对envvar选项的处理方式与click不同。特别是,clickqt始终拆分envvar,而click则根据ParamType拆分。未来的版本将考虑这些问题。在当前的clickQt阶段,选项组的特殊情况不支持,即互斥选项组(https://click-option-group.readthedocs.io/en/latest/tutorial.html#behavior-and-relationship-among-options)。
致谢
此存储库是使用SSC Cookiecutter for Python Packages设置的。
项目详情
clickqt-0.2.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 14c61568a69f26b8be7b3e65b9c38e69cb2377127f71865d664b5ef22f20c878 |
|
MD5 | f3c683c73c2637a0269dc6fbcbf38a6c |
|
BLAKE2b-256 | cf0a344ed8403deda74a81a30ddd088f86080bad27dd3b3814ac3154876595a3 |