PCM_Viewer/test_quick_widget.py

62 lines
1.9 KiB
Python

"""
测试使用QQuickWidget加载QML
"""
import sys
import os
from PySide6.QtWidgets import QApplication, QMainWindow, QQuickWidget
from PySide6.QtCore import QUrl
if __name__ == "__main__":
# 添加PySide6的路径到环境变量
pyside6_path = os.path.dirname(os.path.abspath(__file__))
if os.path.exists(os.path.join(pyside6_path, "venv")):
qml_path = os.path.join(pyside6_path, "venv", "lib", "site-packages", "PySide6", "qml")
else:
import PySide6
pyside6_base = os.path.dirname(PySide6.__file__)
qml_path = os.path.join(pyside6_base, "qml")
# 添加PySide6根目录到系统PATH
pyside6_root_path = os.path.dirname(qml_path)
os.environ["PATH"] = pyside6_root_path + ";" + os.environ.get("PATH", "")
print(f"Added PySide6 root to PATH: {pyside6_root_path}")
# 创建应用程序
app = QApplication(sys.argv)
# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle("QQuickWidget Test")
main_window.resize(400, 300)
# 创建QQuickWidget
quick_widget = QQuickWidget()
main_window.setCentralWidget(quick_widget)
# 加载最小化的QML文件
qml_file = os.path.abspath("test_minimal.qml")
print(f"Loading QML file: {qml_file}")
quick_widget.setSource(QUrl.fromLocalFile(qml_file))
if quick_widget.status() != quick_widget.Ready:
print("ERROR: Failed to load QML file")
print(f"Status: {quick_widget.status()}")
sys.exit(-1)
else:
print("SUCCESS: Loaded QML file successfully!")
# 显示窗口
main_window.show()
# 运行一小段时间后退出
from PySide6.QtCore import QTimer
def quit_app():
app.quit()
timer = QTimer()
timer.timeout.connect(quit_app)
timer.start(2000)
sys.exit(app.exec())