題目:輸入兩個正整數 m 和 n,求其最大公約數和最小公倍數。 求出最大公約數就行,最小公倍數用m*n除以最大公約數就行 package myself; import java.util.Scanner; /** * @Auther QY * @Date 2023/12/11 */ public c ...
1 簡介
在本書從GUI開發的基本原理逐步過渡到使用PySide6創建您自己的、功能齊全的桌面應用程式。
1.1 GUI簡史
圖形用戶界面(GUI Graphical User Interface) 歷史悠久,可追溯到20世紀60年代。斯坦福大學的NLS(ON-Line 系統引入了滑鼠和視窗概念,並於1968年首次公開展示。隨後,施樂公司於1973年推出了Smalltalk系統圖形用戶界面,它是大多數現代通用圖形用戶界面的基礎。
這些早期系統已經具備了我們在現代桌面圖形用戶界面中視為理所當然的許多功能,包括視窗、菜單、單選按鈕、覆選框和後來的圖標。這些功能的組合為我們提供了這類界面的早期縮寫: WIMP(視窗、圖標、菜單、指向設備--滑鼠 windows, icons, menus, pointing device — a mouse)。
1979年,第一款採用圖形用戶界面的商用系統PERQ工作站問世。這刺激了其他一些圖形用戶界面的發展,其中最著名的是蘋果公司的Lisa(1983年),它增加了菜單欄和視窗控制的概念。還有許多其他系統,如 Atari ST (GEM)、Amiga。在 UNIX(以及後來的 Linux)上,1984 年出現了 X 視窗系統。第一版 Windows PC 於 1985 年發佈。
早期的圖形用戶界面並不像我們想象的那樣一經推出就大受歡迎,原因是當時缺乏相容的軟體,而且硬體要求昂貴,尤其是對家庭用戶而言。隨著時間的推移,圖形用戶界面逐漸成為人們與電腦交互的首選方式,WIMP隱喻也被牢固地確立為標準。這並不是說沒有人試圖在桌面上取代WIMP。例如,微軟公司在 1995年推出的 Microsoft Bob(微軟鮑勃),就是微軟公司試圖用房子來取代桌面的嘗試。
從推出Windows 95(1995 年)到Mac OS X(2001 年)、GNOME Shell(2011 年)和 Windows 10(2015 年),不乏其他被譽為革命性的圖形用戶界面。這些系統都對各自桌面系統的用戶界面進行了大刀闊斧的改革,而且往往大張旗鼓。但從根本上說,並沒有什麼真正的改變。這些新的用戶界面在很大程度上仍然是WIMP系統,其功能與20世紀80年代以來的圖形用戶界面完全相同。
革命自觸摸,視窗被全屏應用程式取代。但大量的日常工作仍然是在台式電腦上完成的。WIMP經歷了40年的創新,並有望繼續走下去。
1.2 QT簡介
Qt是一個免費的開源widget工具包,用於創建跨平臺圖形用戶界面應用程式,允許應用程式使用單一代碼庫針對Windows、macOS、Linux和Android等多個平臺。但Qt遠不止是widget工具包,它還內置了對多媒體、資料庫、矢量圖形和MVC界面的支持,將其視為應用程式開發框架更為準確。
Qt由Eirik Chambe-Eng 和 Haavard Nord於1991 年創立,並於1994年成立了第一家Qt公司Trolltech。Qt目前由The Qt Company開發,並繼續定期更新,增加功能,擴展移動和跨平臺支持。
1.2.1 Qt和PySide6
PySide6也稱為Qt for Python,是Qt工具包的Python綁定,目前由Qt公司開發。當您使用PySide6編寫應用程式時,您實際上是在用Qt編寫應用程式。PySide6庫只是C++ Qt 庫的一個封裝,可在Python中使用它。
PySide6中使用的命名約定並不符合PEP8標準。最值得註意的是,函數和變數使用mixedCase而不是 snake_case來命名。你是否在自己的應用程式中遵循這一標準完全取決於你自己,但我發現遵循Python標準很有幫助,有助於明確PySide6代碼的終點和你自己代碼的起點。
最後,雖然有PySide6的特定文檔,但你經常會發現自己在閱讀Qt文檔,因為它更完整。
1.2.2 Pythonic PySide6
在Python中,特性導入用於控制代碼的全局行為。在Qt 5.15中引入了一項功能,使Qt對象可以使用蛇形變數名和方法名。在Qt6中,這一功能被擴展為支持從Python代碼直接訪問Qt屬性,而不是使用 getter/setter 函數。下麵的示例代碼顯示了這些變化對代碼的影響 - 清單 1.
- 標準 PySide6 代碼。
table = QTableWidget()
table.setColumnCount(2)
button = QPushButton("Add")
button.setEnabled(False)
layout = QVBoxLayout()
layout.addWidget(table)
layout.addWidget(button)
同樣的代碼,但啟用了snake_case和true_property。
from __feature__ import snake_case, true_property
table = QTableWidget()
table.column_count = 2
button = QPushButton("Add")
button.enabled = False
layout = QVBoxLayout()
layout.add_widget(table)
layout.add_widget(button)
這些功能有助於Qt代碼更加Pythonic,通過遵循Python代碼風格標準來提高代碼的可讀性。
參考資料
- 軟體測試精品書籍文檔下載持續更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測試開發庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品書籍下載 https://www.cnblogs.com/testing-/p/17438558.html
1.3 補充知識:Widget
在電腦科學和軟體開發領域,Widget(小部件)是指用戶界面中的一個可視化組件或控制項,用於顯示信息、接收用戶輸入或執行特定的功能。Widget通常是圖形用戶界面(GUI)中的一個可交互的元素,可以是按鈕、文本框、下拉菜單、滑塊等。
Widget的主要目的是提供用戶與應用程式或系統之間的交互方式,使用戶能夠與應用程式進行操作、輸入數據或獲取信息。通過使用不同類型的Widget,開發人員可以構建豐富多樣的用戶界面,以滿足不同的需求和提供良好的用戶體驗。
Widget通常具有以下特點:
- 可視化:Widget以圖形的形式在用戶界面中顯示,並提供了一個可視化的方式來呈現信息或控制功能。
- 交互性:Widget允許用戶與其進行交互,例如點擊按鈕、拖動滑塊、選擇下拉菜單等,從而觸發特定的操作或更改應用程式的狀態。
- 可配置性:Widget通常具有一些可配置的屬性,如大小、顏色、字體等,使開發人員能夠根據需求自定義其外觀和行為。
- 可重用性:Widget可以在不同的應用程式或不同的部分中重覆使用,以提高代碼的復用性和可維護性。
常見的Widget庫和框架如HTML/CSS中的Web Widget,Android中的Android Widget,以及各種GUI工具包(如Qt、GTK、WPF等)中提供的各種控制項都是用於構建和管理Widget的工具。
釘釘或微信號: pythontesting 微信公眾號:pythontesting