小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

用Python創(chuàng)建你第一個GIS程序[2]:圖形用戶界面

 GIS薈 2021-09-19
前言:給程序創(chuàng)建一個可視化的操作界面是一個基本的需求,也是軟件的三大組成部分之一。清晰明了的操作界面能幫助用戶正確操作程序,同時也傳遞出設(shè)計者的開發(fā)理念和解決問題的方式。

什么是 GUI?

GUI(Graphical User Interface),圖形用戶界面。是現(xiàn)代軟件的三大組成部分。
你打開軟件首先看到的就是它,按鈕、圖標、下拉框、標注、文本框等等,這些元素組成了圖形用戶界面。
而在“遠古”時期的大部分軟件和如今的部分軟件,是沒有圖形用戶界面的,而是各種原始的命令行窗口。

使用命令行窗口操作軟件的學習成本高,不直觀,大部分普通用戶看了都會敬而遠之。
所以構(gòu)建軟件圖形用戶界面能幫助用戶快速上手,提高效率和友好度。
而提供一整套 GUI 開發(fā)工具、包或者模塊就叫做 GUI 框架


GUI框架的選擇

得益于 Python 語言的熱度快速上升,較為平滑友好的學習曲線。到目前為止已經(jīng)有許多支持 Python 平臺的 GUI 框架。
給了我們許多選擇,這是一件好事,也是一件不好的事,特別是不了解這方面情況的人,會造成選擇恐懼癥。

為了不讓好事變成壞事,我們就來談一談如今 Python 平臺的各種 GUI 框架!也為之后的程序搭建打下基礎(chǔ)。

1.PyQt和PySide

PyQt


第一個說的就是大名鼎鼎的 Qt。電腦桌面端開發(fā)的黃金年代已經(jīng)逐漸遠去,Qt 作為一員老將依然活躍于各種平臺和設(shè)備,經(jīng)久不衰。
Qt 是使用 C++ 開發(fā)的跨平臺應用庫。使用 Qt開發(fā)的不僅有 WPS office、QGIS、Autodesk Maya、OBS、Google Earth 等等知名軟件,甚至還有許多操作系統(tǒng)。

而 PyQt 就是是 Qt 的 Python 語言版本的開發(fā)接口。需要注意的是,PyQt 的性能肯定是比不上原生 Qt 的,但也足夠使用了,也沒有人會選擇使用 Python 去開發(fā)超高性能軟件吧。
PyQt5 是 Qt 的 v5 版本的對應實現(xiàn),是目前最流行的版本。而最新版本是對應 Qt v6 版本的 PyQt6。

Qt 是跨平臺的,同樣 PyQt  也是跨平臺的。開發(fā)者可以在多個平臺上構(gòu)建程序,比如 Windows、Mac、Linux、iOS、Android 等。
PyQt 包含了大約440個類型、超過6000個的函數(shù)和方法。功能強大同時兼具有靈活性,比如用戶可以非常簡單的設(shè)置各種窗口的顯示方式:懸浮、隱藏、重排列等。
給予程序高度的自定義和靈活性。同時提供了 QtDesigner(Qt設(shè)計器),允許用戶在可視化的窗口以拖拽等方式直觀的設(shè)計調(diào)整程序界面。

PyQt 在國內(nèi)也能找到較為詳細的中文教程,對想要入手學習但是英語捉急的朋友也是相當友好的。
總的來說,PyQt 功能強大,是一個重型武器,能實現(xiàn)一個現(xiàn)代 GUI 的所有功能,同時使用 Qt 能比較容易的做出漂亮美觀的程序(程序顏值很重要?。?/span>
但是功能強大的一個普遍負作用就是程序沉重、大,PyQt 也不例外。

你可以在通過使用命令 “pip install pyqt5” 安裝該 GUI 框架。

  • Developed By: Riverbank Computing

  • Website Link: https:///software/pyqt/intro


PySide


之前的 PyQt 是 Riverbank Computing 公司開發(fā)。而 PySide 是 Qt 公司自己開發(fā)的親兒子。由于 PySide 推出時間晚于 PyQt,目前中文文檔較為匱乏,使用人數(shù)也比不上。
PySide 有三個版本:
  • PySide 支持 Qt 4

  • PySide2 支持 Qt 5

  • PySide6 支持 Qt 6

PySide2 是較為常用的版本。
而在2020年12月,Qt 公司推出了最新的 PySide6,支持 Qt6 版本。只有 Python3.6 后的版本支持 PySide6。
PySide 盡管起步較晚,但是作為親兒子同時有 LGPL 協(xié)議的加持,可能會博得一些商業(yè)項目的青睞,未來很有可能超越 PyQt,當然只是有可能。

2.wxPython

除了 PyQt,另外一個知名的第三方框架就是 wxPython。

wxPython 也是一個 Python 語言的 GUI 開發(fā)框架,作為 Python 的擴展模塊實現(xiàn),其內(nèi)部封裝的是 wxWidgets(C++ 語言開發(fā)的跨平臺庫)。
wxPython 是跨平臺的、開源、免費的,可用組件眾多,借助這些組件,開發(fā)者可以快速創(chuàng)建完整、功能全面的用戶界面,其應用也是相當廣泛。
使用 wxPython 制作的初始界面是系統(tǒng)原生界面,也就是說在沒有任何美化的前提下,系統(tǒng)長什么樣,程序的按鈕、關(guān)閉鍵等等窗口和系統(tǒng)保持一致。(所以在Mac OS 下就很好看。)

使用 wxPython 開發(fā)的知名程序有BitTorrent,Google Drive、GRASS GIS等。
你可以在通過使用命令 “pip install wxpython” 安裝該 GUI 框架。
  • Developed By: Robin Dunn

  • Website Link: https://www./

  • Tutorial Link: https://www./watch?v=NMjV_HGLAQE


3.Tkinter

在眾多的 GUI 框架中,最簡單的那就是 Tkinter,Python自帶的標準庫,對于 Python2 和 Python3 都有良好的適配版本。是一個跨平臺、輕量的、不需要額外安裝的 GUI 開發(fā)框架。

Tkinter 提供了最基本的 GUI 組件,最常用的有 Button(按鈕)、Frame(框組件)、Label(標簽)、Text(文本)、File Dialog(文件對話框)、Canvas(圖形繪制組件)等,同時提供自帶的額外擴展組件模塊 ttk,完全能夠滿足小型簡單項目的開發(fā)。

這也是該篇文章的選擇,使用 Python 開發(fā) GUI 程序簡單,不需要額外安裝第三方包,避免了各種版本沖突等問題,能讓我們將注意力放在程序的內(nèi)部實現(xiàn)上。

盡管 Tkinter 咋一看還不錯,但是依然被很多人嫌棄,其中一個重要原因就是丑,連程序世界都不喜歡丑的,太慘了。
但是有代碼的地方就有無限的可能,再丑也能變身成功。第一種方式就是通過 Tkinter 自帶的可調(diào)節(jié)選項來修改或者使用自帶的 ttk 庫中的組件;
第二種方式最簡單便捷:直接使用 Tkinter 樣式庫。但是要找到支持Python2.7 并且滿意的樣式庫還是比較難的。最終我選擇了 ttkthemes 這個庫。效果如下:

在該教程的后面會出單獨制作一篇美化教程,敬請期待!

如果有朋友希望深入研究 Tkinter,推薦書籍《Python GUI Programming Cookbook》。

4 其他

上述三種 GUI 框架:
  • 復雜度:PyQt5>wxPython>Tkinter

  • 功能多樣性:PyQt5>wxPython>Tkinter

如果你喜歡折騰、有大把時間學習,想把 GUI 做的盡善盡美,不介意其龐大的體積的話,那么推薦 PyQt;

如果你希望較快的構(gòu)建一個功能完善,同時具有較強的擴展性和豐富的各類組件,又不希望程序臃腫的話,wxPython 是你的好伙伴。

如果你希望極速構(gòu)建一個程序又不介意界面的美丑(可以通過樣式庫美化,也很好看),上手快也不需要安裝任何東西同時程序輕量小巧,那么一定得試試 Tkinter。

當然 Python 平臺還有很多 GUI 框架,比如Kivy、PyGUI、Pyforms、PyGTK等,這里就不做詳細說明了。


結(jié)束語


分享GIS,不止于Python。
薈GIS精粹,關(guān)注我,帶你飛!
(長按掃碼)

歡迎交流點擊留言

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多