PythonQt 讓 Python 的 QT Application 嵌入於 C++
研究 PythonQt 模組
Categories:
Install PyQt5
sudo apt install qtbase5-dev
sudo apt install libqt5widgets5
sudo apt install libqt5widgets5
sudo apt install libqt5gui5
sudo apt install qtbase5-private-dev
# web engine related.
sudo apt install qtwebengine5-dev qtwebengine5-dev-tools libqt5webengine5 libqt5webenginewidgets5
Install PythonQt
我的環境是 WSL
git clone PythonQt
git clone https://github.com/MeVisLab/pythonqt.git
參考 Building 頁面 Linux 的環節
cd $PythonQtRoot qmake make all
fatal error: ‘private/qmetaobjectbuilderp.h’
安裝 qtbase5-private-dev
sudo apt install qtbase5-private-dev
Compile The First App
PythonQt 提供了 pro
檔案於 $PYTHONQT_ROOT/build
底下,這種檔案用於 qmake,如果想使用 cmake 則需另外轉換。
下面的範例導入了 core 跟 widgets 兩個模組,如果有用到其他模組,像是 QWebEngineView
,就繼續往後加。加的關鍵字可以看 QT 網站上,會寫這個元件的 qmake 要寫什麼,以 QWebEngineView
來說就是 QT += webenginewidgets
(search: qmake)
QT += core widgets # 如果有用到其他 module 加在這裡
CONFIG += c++11
LOC = ABS/PATH/TO/PYTHONQT
# Include the .prf files
include($$LOC/build/common.prf)
include($$LOC/build/PythonQt.prf)
include($$LOC/build/PythonQt_QtAll.prf)
# Specify the source files
SOURCES += main.cpp
# Include directories (optional, if not specified in .prf files)
# INCLUDEPATH += /usr/include/qt5 /usr/include/qt5/QtCore /usr/include/qt5/QtWidgets $$LOC/pythonqt
# Library directories (optional, if not specified in .prf files)
LIBS += -L/usr/lib/x86_64-linux-gnu -L$$LOC/lib
# 不想把 lib 放在 LD_LIBRARY_PATH 要設 RPATH,QMAKE_RPATHDIR 是讓 qmake 在生成 command 時設 rpath 的 info
QMAKE_RPATHDIR += $$LOC/lib
# 執行檔名稱
TARGET = gui
官方範例
Source code 在: PythonQt/examples,但範例在
$PYTHONQT_ROOT/lib
底下!執行範例的時候,記得把 Lib 加入
LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$PYTHONQT_ROOT/lib
For example:
PyLauncher
是其中一個範例,功能是會執行傳入的 py 檔,如果檔案無效會發出警告。下面讓
PyLauncher
執行另一個 example 的 py 檔:cd $PYTHONQT_ROOT/lib ./PyLauncher ../examples/PyGuiExample/example.py