navmazing 1.1.6
pip install navmazing
上次发布日期:
一个简单的导航框架
- 您所在的位置:
- Python中文网 >
- pypi >
- navmazing库 >
- 正文
navmazing的Python项目详细描述
导航
简介
支持复杂设计的简单导航框架
设计
navmazing基于许多导航步骤,这些步骤是navigatestep对象的子类。这些步骤对象通过定义一个先决条件方法具有关系,如果确定我们不是请求步骤的当前成员,则该方法可以转到上一步。从第一步开始并访问链中的所有先决条件直到解决这些先决条件为止的步骤链构成了一个完整的导航。
使用量
下面是一个例子。这将创建一个简单的类来建模某些提供者对象,该对象在ui中有三个目的地或页面:一个new页面、一个details页面和一个all页面。new页面是添加新提供者的位置,all页面是查看所有提供者列表的位置。要进入new页面,必须首先访问all页面。details页面是显示特定提供程序的位置。在下面的示例中,您可以看到我们对一些非常简单的步骤建模并将它们注册到类中。
fromnavmazingimportNavigate,NavigateStep,NavigateToSiblingnavigator=Navigate()classProvider(object):def__init__(self,name):self.name=name@navigator.register(Provider,'Details')classProviderDetails(NavigateStep):prerequisite=NavigateToSibling('All')defstep(self):click(self.obj.name)@navigator.register(Provider,'New')classAddANewProvider(NavigateStep):prerequisite=NavigateToSibling('All')defstep(self):click('Add New Button')@navigator.register(Provider,'All')classShowAllProviders(NavigateStep):defam_i_here(self):returncheck_if_i_am_already_on_page()defstep(self):click('All button')
类ShowAllProviders表示到达all页的步骤。这个类有两个方法,am_i_here()和step()。step()方法描述了我们应该如何执行进入all页面的步骤。假设在这个特定的ui中,all按钮总是可见的。am_i_here()方法是一种查询我们是否已经在此页上的方法。如果可以确定我们已经在请求访问的页面上,则此选项用于快捷导航。
类AddANewProvider表示进入新页面的步骤。这个类有一个属性和一个方法。prerequisite实际上是一个python描述符。它使用NavigateToSiblinghelper导航到已请求访问new页的同一对象上的all目标。可以简单地使prerequisite成为一个函数,用self.obj和All目标调用navigate_to。不过,helper更好一些,使定义先决条件的步骤更清晰一些。
类ProviderDetails表示到达特定提供程序页的步骤,它的详细信息页。这个类与AddANewProvider类相同,因为它首先要求按下all按钮。注意在step()方法中,有一个对self.obj的引用。此对象是传递到导航步骤的对象,如下所示。在下面的示例中,这个对象称为prov。
# Non helper methoddefprerequisite(self):navigator.navigate(self.obj,'All')# Using helper methodprerequisite=NavigateToSibling('All')
要使用上面的代码,需要实例化一个provider对象,然后使用如下导航方法:
prov=Provider('name')navigator.navigate(prov,'Details')
导航助手
Navmazing有几个帮助程序,使先决条件更易于定义
- NavigateToSibling-导航到与当前请求注册到同一对象的目标。
- NavigateToAttribute-导航到与当前请求注册到同一对象的属性的目标。如果对象具有某种层次结构,并且您希望导航到针对某个属性而不是对象本身注册的步骤,则此选项非常有用
- NavigateToObject-导航到已注册到所提供对象的目标,可以认为可以通过navigatetoobject调用来实现navigatetoattribute,只需提供属性对象作为对象。在这些情况下,使用navigatetoattribute感觉更加动态和干净,因为属性是一个被查找的字符串,而不是一个静态的对象。
流程图
下图显示了流程图使用库存导航库解析导航的过程。由于这些方法是可重写的,因此可以更改流,但对于大多数使用来说应该足够了。
高级使用
navmazing还允许在导航调用时传递参数。这意味着您可以在导航目的地中允许某种程度的动态性质或选择。举个例子来说,你有一个步骤通常是单向的,但有时你需要克服这种行为,让它以不同的方式工作。
@navigator.register(Provider,'Details')classProviderDetails(NavigateStep)prerequisite=NavigateToSibling('All')defstep(self,active=True):ifchoice:click(self.obj.name)else:click(self.obj.name+" - inactive")# Call by defaultnavigate(obj,'Details')# Call, passing in a parameter for choicenavigate(obj,'Details',active=False)
在上面的示例中,传递active参数会更改步骤的行为。
推荐PyPI第三方库
PyPDE
求解任意双曲/抛物偏微分方程组
itd
黑暗中的python程序员的冒险/逃避游戏。
web-command
将命令输出到web浏览器。
morsep
一个用于python的morse解密和加密模块
tormdb
未提供项目说明
wagtail-fakenews
创建虚假的Wagtail页面
flask-session-azure
使用Azure表存储或CosmosDB表API的Flask会话
finstmt
用于处理财务报表数据的Python包
flood-solve
图形颜色洪水难题求解器。
qx
用ASCII键对数据进行编码和解码的一种工具和文件格式
grapht
我在DPhil中经常使用的工具
wikivents
一个简单的Python包来表示来自Wikipedia和Wikidata资源的事件。
sphinx-comments
在文档中添加注释和注释。
Py-Monitor-JetsonTX2
这个包允许您监视python如何使用您的资源
douyuquiz
获取斗鱼问答信息
导 航 栏
项目 链接
标 签
许可证: BSD许可证(BSD 3条款)
作者信息:: 暂无
最新PyPI项目
- italian_vip_says
- UFx
- vofs
- fake_item_generator
- NerEva
- django-monologue
- fio_product_attribute_strict
- climailsystem
- pyshape
- tbb-devel
- npy-append-arra
- anthill.tal.macrorenderer
- odoo11-addon-stock-a
- uuuu
- contextil
- fyl_nester
- appomatic_renderable
- teacher
- chuletas
- slackbot_ce
最新Python常见问题
- 如何提高Djang的410误差
- 如何提高doc2vec模型中两个文档(句子)的余弦相似度?
- 如何提高Docker的日志限制?|[输出已剪裁,达到日志限制100KiB/s]
- 如何提高DQN的性能?
- 如何提高EasyOCR的准确性/预测?
- 如何提高Euler#39项目解决方案的效率?
- 如何提高F1成绩进行分类
- 如何提高FaceNet的准确性
- 如何提高fft处理的精度?
- 如何提高Fibonacci实现对大n的精度?
- 如何提高Flask与psycopg2的连接时间
- 如何提高FosterCauer变换的scipy.signal.invres()的数值稳定性?
- 如何提高gae查询的性能?
- 如何提高GANs用于时间序列预测/异常检测的结果
- 如何提高gevent和tornado组合的性能?