image.png
設計GUI,大家首先想到的是拖放一個個控件,然后設置屬性,再響應對應的操作,收發數據,類似于靜態HTML。
其實前端流行趨勢早就用動態HTML,諸如大家熟悉的Vue.js、Angular等前端框架。Qt GUI設計也響應這種潮流,早就推出了QML(Qt 描述性語言),使用更方便、更直觀,以后會以QML為主流,我們放到下一講介紹。
但首先,還是先從QWidget入手,畢竟是基礎,需要了解控件、布局、信號與槽函數。
此類教程已很多,我就不重復了。推薦學習最新支持Qt6的:
PyQt6 中文教程 (gitbook.io)
對應英文版目錄在這里:
Table of contents
- Introduction PyQt6簡介
- Date and time 日期與時間
- First programs
- Menus and toolbars 菜單與工具欄
- Layout management 布局設計
- Events and signals 事件與信號
- Dialogs 對話框
- Widgets 組件:QCheckBox、QPushButton、QSlider、QProgressBar和QCalendarWidget
- Widgets II 組件2:QPixmap, QLineEdit, QSplitter 和 QComboBox
- Drag & drop 拖放操作
- Painting 繪圖
- Custom widgets 自定義組件
- The Tetris game 俄羅斯方塊
PySide6官方文檔 https://doc.qt.io/qtforpython-6/
由于PySide與PyQt基本上是可替換的,先學習哪種都行。
下一步,開發完整的小應用來練手
比如上位機軟件、桌面鬧鐘等。
比如 桌面小寵物:
- 頭條上學到的,已改成qt6代碼:https://github.com/kevinqqnj/desktop-pet
- 功能:
- 隨機更換圖片和文字
- 無邊框透明窗口
- 可拖拽
- 在系統托盤顯示
- 自定義右鍵菜單
- 可以用nuitka打包成.exe文件,16MB左右
image.png
下一集預告
QML offers an alternative approach to create User Interfaces, compared to Widgets, and it was originally motivated from mobile applications development. Together with the Qt Quick module, it provides access to interact with mobile device using actions like taps, drag and drop, animations, states, transitions, drawer menus, etc.
- Widget主要集中在金融、軍工、安防、航天、船舶、教育等領域,qml主要集中在汽車儀表、車機、直播等領域。
- 如果應用是用手指操作,那么用 QML 更合適,如果是用鼠標操作,那么用 Widget 更合適