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是什么指示灯_汽车打不着火是怎么回事,仪表盘汽车发动机故障灯亮是什么情况故障指示灯图解大全集...

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

python极简教程_Python 极简教程(六)运算符

运算符,我们日常生活中使用的加减乘除,都是运算符的一种。当然这种一般我们称为算术运算符,用于处理数字运算的。但是在计算机语言中,还有很多的运算符。用于处理不用的情况。主要有以下几类:算术运算符比较运算符逻辑…

python函数可变长参数_day14 Python函数之可变长参数

函数参数1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量2.实参可以是常量、变量、表达式、函数等,无论实参是…

ubuntu 安装java jdk_「ubuntu安装jdk」Ubuntu安装jdk8的两种方式 - seo实验室

ubuntu安装jdk安装方式:1):通过ppa(源) 方式安装.2):通过官网安装包安装.JDK官网下载地址一:使用ppa(源)方式安装:1):添加ppa源sudo add-apt-repository ppa:webupd8team/javasudo apt-get update2)&#x…

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

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

java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装

JAVA JDBC 常规增删改查简单封装,可满足大多基本要求作用:1, 查询列表是直接返回List对象,不必再遍历;2, 单条查询直接返回对象;3, 执行sql仅需一个方法搞定;package com.Main.Tools…

python wget安装_Macbook系统环境安装wget的2个方法 - 传统包及Homebrew安装

考虑到自身项目的拓展需要,朋友建议学习Python爬虫这样对于做大数据采集有较大的帮助,老蒋虽然每天也都接触一些脚本和程序的修改,但是并没有专业和系统的学习某一项编程。所以还是准备陆续的学习Python语言,无论有没有基础&#…

java 程序找错_java代码找错

展开全部你试一下这个行不行,输入的时候是数字e69da5e6ba903231313335323631343130323136353331333335313138,数字,数字;数字,数字。。。。。的格式,你把我注释的那个输入行(String stInput input.next();)的注释去掉,把我字符串写死的那行(…

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

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

Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...

最近在写Socket客户端的时候遇到点问题客户端在创建时创建了2个线程一个监听键盘输入事件,使用的是buffered,当检测到输入完成时写入流发送给服务端。String content "";while (!(content bufferedReader.readLine()).equals("exit&quo…

python函数参数传递机制_Python 学习笔记(一) 理解Python的函数传参机制

对于刚接触Python不久的新手,Python的函数传参机制往往会让人迷惑。学过C的同学都知道函数参数可以传值或者传地址。比如下面这段代码点击(此处)折叠或打开void func(int input) {input 100;}int a 0;func(a);printf("%d", a);结果应该是打印0&#xff…

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

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

python renamer模块_Python - 批量文件重命名

两个目标两个:1. 输入一组文件名,进行批量重命名;2. 输入一组目录名,批量重命名各个目录下的文件。附加功能:1. 可根据文件的创建日期对文件重新排序;2. 重命名方式为递增数列,可带前后缀&#…

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开发团队赋予它的使命是(在…

python爬取哔哩哔哩视频_Python实现视频爬取下载

注:源内容来自公众号【python学习开发】一般情况下我们使用爬虫更多的是对数据或者图片进行爬取,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同样试用。接下来我们来介绍此次爬取视频过…

java约瑟夫环pta上_cdoj525-猴子选大王 (约瑟夫环)

约瑟夫斯问题问题有时候也被描述成猴子选大王问题,题目如下.(最后会贴上约瑟夫问题的来历) 一群猴子排成一圈,按1,2,…,n依次编号. 然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴…

java++记录+运行_记录java+testng运行selenium(三)---xml、ini、excel、日志等配置

一: ini文件ini目前只用处存储浏览类型及需要打开的url,ini文件放在configs文件夹下面。读取ini代码如下:1 packagetoolskit.documents;23 import java.io.*;4 import java.util.*;56 /**7 * ClassName: ReadIni8 * Author: DingDong9 * D…

python字符串前面加f什么意思_Python 字符串前面加u,r,b,f的含义

1、字符串前加 u例:u"我是含有中文字符组成的字符串。"作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。2、字符串前加 r例&#xff1a…