跳转到主要内容

将click CLI转换为QT应用程序

项目描述

欢迎来到clickqt

License: MIT GitHub Workflow Status Documentation Status

这目前是我和一群学生共同积极开发的项目

什么是clickqt

clickqt是一个Python包,它可以将click的CLIs转换为Qt-GUIs。实际上,它将

Usage: example_cli greet [OPTIONS]

Options:
  --userinfo <TEXT INTEGER DATETIME>...
  --help                          Show this message and exit.

转换成

test

安装

可以从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

用法

test

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 (224.5 kB 查看散列)

支持