
設(shè)計(jì)GUI,大家首先想到的是拖放一個個控件,然后設(shè)置屬性,再響應(yīng)對應(yīng)的操作,收發(fā)數(shù)據(jù),類似于靜態(tài)HTML。
其實(shí)前端流行趨勢早就用動態(tài)HTML,諸如大家熟悉的Vue.js、Angular等前端框架。Qt GUI設(shè)計(jì)也響應(yīng)這種潮流,早就推出了QML(Qt 描述性語言),使用更方便、更直觀,以后會以QML為主流,我們放到下一講介紹。
但首先,還是先從QWidget入手,畢竟是基礎(chǔ),需要了解控件、布局、信號與槽函數(shù)。
此類教程已很多,我就不重復(fù)了。推薦學(xué)習(xí)最新支持Qt6的:
PyQt6 中文教程 (gitbook.io)
對應(yīng)英文版目錄在這里:
Table of contents
- Introduction PyQt6簡介
- Date and time 日期與時間
- First programs
- Menus and toolbars 菜單與工具欄
- Layout management 布局設(shè)計(jì)
- 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基本上是可替換的,先學(xué)習(xí)哪種都行。
下一步,開發(fā)完整的小應(yīng)用來練手
比如上位機(jī)軟件、桌面鬧鐘等。
比如 桌面小寵物:
- 頭條上學(xué)到的,已改成qt6代碼:https://github.com/kevinqqnj/desktop-pet
- 功能:
- 隨機(jī)更換圖片和文字
- 無邊框透明窗口
- 可拖拽
- 在系統(tǒng)托盤顯示
- 自定義右鍵菜單
- 可以用nuitka打包成.exe文件,16MB左右

下一集預(yù)告
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主要集中在金融、軍工、安防、航天、船舶、教育等領(lǐng)域,qml主要集中在汽車儀表、車機(jī)、直播等領(lǐng)域。
- 如果應(yīng)用是用手指操作,那么用 QML 更合適,如果是用鼠標(biāo)操作,那么用 Widget 更合適