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.pswp.cn/news/533953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533953.shtml
英文地址,請注明出處:http://en.pswp.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…