python 且_Pyface库:一个基于pyqt、pyside、wx且简化的python的GUI

1 说明:

=====

1.1 Pyface库由大名鼎鼎的enthought出品。

1.2 介绍:

1.2.1 英文:

traits-capable windowing framework.

The pyface project contains a toolkit-independent GUI abstraction layer,

which is used to support the "visualization" features of the Traits package.

Thus, you can write code in terms of the Traits API (views, items, editors, etc.),

and let pyface and your selected toolkit,

and back-end take care of the details of displaying them.

1.2.2 中文:

具有Traits特质的窗口框架。

pyface项目包含一个独立于工具包的GUI抽象层,

用于支持Traits包的“可视化”功能。

因此,您可以根据Traits API(视图,项目,编辑器等)编写代码,

并让pyface和您选择的工具包,

和后端负责显示它们的细节。

652ace1a0ff8c385a94e6add600e1dd4.png

2 准备:

=====

2.1 官网:

https://github.com/enthought/pyfacehttps://pypi.org/project/pyface/#教程https://docs.enthought.com/pyface/https://docs.enthought.com/pyface/api/pyface.html

2.2 依靠:

The following GUI backends are supported:选择一个即可

wxPython #本机未安装

PyQt #本机安装pyqt5

PySide #本机安装pyside2

2.3 安装:

pip install pyface

3 Hello world:

===========

3.1 效果图:

36a4d0138fff0c02cb84799de64e66ed.png

3.2 代码:注释中有4种方法,基本对建议窗口设置的熟悉和入门了。

'''#方法一from pyface.api import ApplicationWindow, GUI, HeadingTextclass MainWindow(ApplicationWindow):    #窗口标题名,默认窗口大小设置    title = "Hello World==你好世界!"    #默认    #定义    def _create_contents(self, parent):        #窗口标签显示text文本        self._label = HeadingText(parent, text="Hello World==你好世界!")        return self._label.controldef main():    gui = GUI()    window = MainWindow()    window.open()    gui.start_event_loop()if __name__ == "__main__":    main()''''''#方法二from pyface.api import ApplicationWindow, GUI, HeadingTextclass MainWindow(ApplicationWindow):    #窗口标题名    title = "Hello World==你好世界!"  #注意没有逗号    size = (700, 700)   #窗口大小设置,与size与title没有逗号隔开    #定义    def _create_contents(self, parent):        #窗口标签显示text文本        self._label = HeadingText(parent, text="Hello World==你好世界!")        return self._label.controlgui = GUI()window = MainWindow()window.open()gui.start_event_loop()''''''#方法三from pyface.api import ApplicationWindow, GUI, HeadingTextclass MainWindow(ApplicationWindow):    #窗口标题名    title = "Hello World==你好世界!"  #注意没有逗号    size = (700, 700)   #窗口大小设置,与size与title没有逗号隔开    #定义    def _create_contents(self, parent):        #窗口标签显示text文本        self._label = HeadingText(parent, text="Hello World==你好世界!")        return self._label.controlif __name__ == "__main__":    gui = GUI()    window = MainWindow()    window.open()    gui.start_event_loop()'''#方法四from pyface.api import ApplicationWindow, GUI, HeadingTextclass MainWindow(ApplicationWindow):    #窗口标题名    #title = "Hello World==你好世界!"  #注意没有逗号    #size = (700, 700)   #窗口大小设置,与size与title没有逗号隔开    #定义    def _create_contents(self, parent):        #窗口标签显示text文本        self._label = HeadingText(parent, text="Hello World==你好世界!")        return self._label.controlif __name__ == "__main__":    gui = GUI()    #window = MainWindow()    window = MainWindow(size = (700, 700) ,title = "Hello World==你好世界!" )    window.open()    gui.start_event_loop()

4 pythonshell:

==========

4.1 简易pythonshell:

4.1.1 代码:

from pyface.api import ApplicationWindow, GUI, PythonShellclass MainWindow(ApplicationWindow):    #窗口大小和标题名    size = (800, 800)    title = "Pythonshell"    def _create_contents(self, parent):        self._shell = PythonShell(parent)  #调用pythonsheel        return self._shell.controlif __name__ == "__main__":    gui = GUI()    window = MainWindow()    window.open()    gui.start_event_loop()

4.1.2 效果图:

65ac6b355719e676d21dfc48473acf2e.png

4.2 高级pythonshell:

4.2.1 特点:带有功能菜单、图标、网址外联的。

4.2.2 文件结构展示:

4c8b2193c7172dd319a92ee3b4b1a904.gif

4.2.3 代码省略,看看效果图:

d66829504e7851fe38bf4ed667abbb7b.gif

4.2.4 注意上面还运行了一个外部脚本:matplotlib-tk-pie.py

5 progress:

========

5.1 带进度条的主窗口。

5.2 代码:

import timefrom pyface.api import GUI, ApplicationWindow, ProgressDialogfrom pyface.action.api import Action, MenuManager, MenuBarManagerdef task_func(t):    #展示进度条窗口    progress = ProgressDialog(        ,        message="counting to %d" % t,        max=t,        show_time=True,  #显示展示时间        can_cancel=True,  #显示取消按钮    )    progress.open()    for i in range(0, t + 1):        time.sleep(1)        #print(i)        (cont, skip) = progress.update(i)        if not cont or skip:            break    progress.update(t)#def _main():  #注意带下划线的命名,防止与程序的main重复def num_main(): #这种就不会    task_func(10)'''#主窗口,暂时注释掉class MainWindow(ApplicationWindow):    def __init__(self, **traits):        super(MainWindow, self).__init__(**traits)         #以上是主窗口的默认设置        # Add a menu bar.        self.menu_bar_manager = MenuBarManager(            MenuManager(                Action(name="E&xit", on_perform=self.close),                #Action(name="DoIt", on_perform=_main), #这种命名容易混淆,还好带有下划线                Action(name="DoIt", on_perform=num_main),                name="&File",            )        )        return'''if __name__ == "__main__":    gui = GUI()    #window = MainWindow()  #主窗口    #window.open()    #_main()  #注意这种命名    num_main()  #这种就不会,调用进度条窗口    gui.start_event_loop()

5.3 操作和效果图:

29f310a79ea73b3a3fe447f1b9ca9e2b.gif

6 弹出框学习:

==========

6.1 代码:

#一行模块带出,方法一,带括号from pyface.api import (    ApplicationWindow,    GUI,    YES,    choose_one,    confirm,    error,    information,    warning,)#一行模块导出,方法二,不带括号from pyface.action.api import Action, MenuBarManager, MenuManager#定义主窗口class MainWindow(ApplicationWindow):    def __init__(self, **traits):        super(MainWindow, self).__init__(**traits)        #默认主窗口设置,背景颜色为蓝色        # 定义菜单menu_bar        self.menu_bar_manager = MenuBarManager(            MenuManager(                Action(name="E&xit", on_perform=self._on_exit), name="&File"            )        )        return    def _on_exit(self):        parent = self.control        #调出弹出窗口        choose_one(parent, "Make a choice", ["one", "two", "three"])  #选择框        #print(choose_one(parent, "Make a choice", ["one", "two", "three"]))        information(parent, "Going...")  #信息弹出框/窗口        warning(parent, "Going......")   #警告框        error(parent, "Gone!")           #错误框        if confirm(parent, "Should I exit?") == YES:  #确认框            self.close()if __name__ == "__main__":    gui = GUI()    window = MainWindow(size=(800,800),)    window.open()    gui.start_event_loop()

6.2 效果图:

aef45c0ef65d058e65e743c66a3528f1.gif

7 本机默认pyface的窗口GUI是pyqt5

32cd68eb4e17578ee98e93328b46f52c.png

===自己整理并分享出来===

喜欢的人,请点赞、转发、关注、评论和收藏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java方法的参数类型_Java 基础 14 方法的重载 与 方法参数类型详解

1.1 方法重载的概述和特点方法重载概述在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。方法重载特点与返回值类型无关,只看方法名和参数列表在调用时,虚拟机通过参数列表的不同来区分同名方法…

crv仪表上的i是什么指示灯_汽车打不着火是怎么回事,仪表盘汽车发动机故障灯亮是什么情况故障指示灯图解大全集...

如果打不着火,那有可能是起动机坏了,有可能是电池没电了,有可能是电路出现了问题,还有可能是点火系统出现了问题。汽车发动机的点火系统主要部件是火花塞和点火线圈,火花塞是一个需要定期更换的易损件。如果火花塞长时…

restful风格_什么是RESTful风格的API设计?

随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但我们说了那么多RESTful设计,它到底是什么?本篇文章带大家来了解一下它的真实面目。RESTful概念首先,我们需要明确的是RESTful,它是一个理念&am…

zookeeper 分布式锁_关于redis分布式锁,zookeeper分布式锁原理的一些学习与思考

编辑:业余草来源:https://www.xttblog.com/?p4946首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。在一个进程中,也就是一…

网页无法调用java9_JAVA 9 (内部类,异常,包)

内部类:将一个类定义在另一个类里面,称里面那个类为内部类。举例:class Zx{public static void main(String []arr){Outer o new Outer();o.method();}}class Outer{class Inner //内部类,可以定义多个内部类{void function(){S…

spark算子_Spark篇之持久化算子

一、前述Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执…

java g1 gc ref proc_深入理解垃圾收集器的G1及日志分析

尽管Hotspot 最新的垃圾回收器G1是在2006年推出的。但是G1从推行至今的市场反响来看,但现在足以证明这款垃圾收集器是经得起考验的,从java9开始,就默认为G1垃圾收集器。G1是一款面向服务端应用的垃圾收集器。HotSpot开发团队赋予它的使命是(在…

gif透明背景动画_【超实用干货! 】iPad上的动画App大推荐

作者/立夏编辑/彼方大家好,我是立夏。大概在两年前吧我为大家写过几款动画APP的评测,这一次我也想给大家推荐一些我的新宠,供大家参考。我在这里就不过多提及如Animation Desk、Procreate或是Callipeg之类知名度相对更高一些的动画App了&…

iphone如何信任软件_【手机软件】千禾影院:全新观影神器,支持安卓+iOS,最新、最全、高清、免费!...

Hello,大家好,我是春哥!每天记得打卡哦!感谢每一位小伙伴们的关注和支持!免责声明大部分资源来源于网络,仅供学习和交流使用,如有侵权请联系我们删除。每期文章末尾都会有关键词,在公众号发消息…

Java小魔女芭芭拉_沉迷蘑菇不可自拔,黏土人《小魔女学园》苏西·曼芭芭拉 图赏...

GOOD SMILE出品的黏土人系列手办新作——《小魔女学园》苏西曼芭芭拉,已经开始接受预定了。这款黏土人的原型师是来自中国上海的陈天,售价4167日元,预计2018年4月发售。苏西是主人公亚可的室友,她是从东南亚来的身份不明的魔女。热…

java int相除向上取整_java实战项目常用类,Date、Calendar、BigDecimal、Math、UUID

Java开发中经常用到的类和方法,以下主要就日期是时间处理、金融数字处理、数学计算、随机数、MD5加密等。java.util.Date类java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。日期时间的本质是一个long,它…

R语言中dim函数_R语言--向量化计算(apply族函数)

R语言最优秀的是它的向量化编程,这其中apply族函数扮演了非常重要的角色。apply族函数是由apply、sapply、lapply、mapply、tapply等函数组成的。熟练使用apply族函数,能够简化程序,提高代码的运算速度。软件&环境win10 64bitR 3.6.1appl…

谷歌浏览器中文版_中国科学家设计超薄指尖传感器,厚度不到A4纸五分之一 / 谷歌发布地图时光机:百年前,你家街道啥样?/ AI看图说话首超人类...

关注我们了解计算机视觉最新动态 !动态先览1中国科学家设计超薄指尖传感器,厚度不到A4纸五分之一2谷歌发布地图「时光机」:100年前,你家街道长啥样?3仿真环境跟车2分钟,就让自动驾驶系统撞上马路牙子&#…

300小时成为java程序员_直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!...

原标题:直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!今天给大家分享一位Java程序员小伙去阿里应聘的经历!从Java开发要掌握的技术来讲,前面已经说得差不多了。我主要想从面试者的角度谈一谈看法。如果是我面试,就给…

anaconda python3.8目录_MacBook Pro 安装anaconda、配置环境

新入手了MacBook Pro,iOS系统还不算非常熟练...作为一个新手程序员,在python开发道路上的学习就从安装环境开始吧:1、下载安装包2、安装过程一路同意or继续...不过,mac上弹出不允许在当前路径安装,那么选择自定义安装路…

stm32外部中断_STM32学习笔记 | 电源管理及低功耗设计要点

一款好的电子产品,都需要认真考虑电源管理的问题,电池供电的产品更应该注意低功耗的实现。 STM32电源介绍嵌入式开发直播课 - STM32 USART串口的应用 - 创客学院直播室​www.makeru.com.cn每一块STM32芯片中都有一个电源控制器(PWR&#xff0…

delphi 调用浏览器内核_HFL:基于混合模糊测试的Linux内核漏洞挖掘

RemarksConference: NDSS 2020Full Paper: HFL: Hybrid Fuzzing on the Linux KernelSummary针对的问题: Linux 操作系统内核安全漏洞的发现需要新技术。现有解决方案的不足:当前的模糊测试技术难以直接应用于内核安全漏洞发现。提出的创新方案概述&…

隔行变色java代码_jquery入门—选择器实现隔行变色实例代码

1、JQuery选择器继承了CSS、path语音的部分语法,允许通过标签名、属性名、内容对DOM元素进行快速、准确的选择。2、JQuery选择器与JavaScript相比,具有代码简单、完善的检测机制的优势。3、使用JQuery选择器实现隔行变色,示例代码如下&#x…

角标越界 Java_【新人求助】利用占位符操作数据库是总是提示数组角标越界是怎么回事 - Java论坛 - 51CTO技术论坛_中国领先的IT技术社区...

用占位符和数组来操作数据库总是提示下角标越界,找了半天也没弄明白哪里有问题,这个地方是跟着云课堂老师的讲解做的,只不过操作的数据表不一样,但是老师那个就没问题,我就出了问题,如果有大神能帮忙看看&a…

简述ospf的工作原理_现代数字存储示波器的工作原理简述

示波器是一种用途十分广泛的电子测量仪器。俗话说,电是看不见摸不着的。但是示波器可以帮我们“看见”电信号,便于人们研究各种电现象的变化过程。所以示波器的核心功能,就和他的名字一样,是显示电信号波形的仪器,以供…