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第三方库
django-addle
用于管理广告和内部促销的django应用程序。
taiga-contrib-mailjet-subscription
用于订阅和取消订阅Mailjet中新闻稿的插件。
batchbook-python
用python编写的batchbook api
the_rack
具有扩展能力的可缓存集合
tkinterquickhelper
Tkinter的助手,额外的窗户。
bandcampscrape
音乐营专辑下载程序
odoo8-addon-contract-show-recurring-invoice
在合同中显示其经常性发票的按钮
masonite
马森提纲的核心
pygments-pytest
pygments lexer用于pytest输出。
py-eth-sig-utils
中文名称:蟒蛇
graphqlparser
libgraphqlparser的python绑定(基于cython)
dtnsim
具有多个代理/移动性模型的dtn(延迟/中断容忍网络)模拟器
picklachu
小数据存储
Collectors
监视(simpy)仿真模型或其他对象并从中收集数据。
django-templatetags-bundle
詹戈特布拉泰格斯干红葡萄酒
导 航 栏
项目 链接
标 签
许可证: 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常见问题
- 将Pandas数据帧转换为PyTorch张量?
- 将Pandas数据帧转换为scipy稀疏矩阵
- 将Pandas数据帧转换为Spark Datafram时出现问题
- 将pandas数据帧转换为spark DataFram时出错
- 将Pandas数据帧转换为spark datafram时收到错误
- 将Pandas数据帧转换为Spark数据帧
- 将Pandas数据帧转换为Tensorflow数据
- 将Pandas数据帧转换为tkinter obj
- 将pandas数据帧转换为XML
- 将Pandas数据帧转换为值sql语句
- 将pandas数据帧转换为元组
- 将pandas数据帧转换为元组列表
- 将pandas数据帧转换为元组列表并删除所有pandas数据类型
- 将pandas数据帧转换为具有头和数据类型的numpy数组
- 将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中