main.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # Copyright (C) 2022 The Qt Company Ltd.
  2. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
  3. import sys
  4. import urllib.request
  5. import json
  6. from pathlib import Path
  7. from PySide6.QtQuick import QQuickView
  8. from PySide6.QtCore import QStringListModel, QUrl
  9. from PySide6.QtGui import QGuiApplication
  10. if __name__ == '__main__':
  11. #get our data
  12. url = "http://country.io/names.json"
  13. response = urllib.request.urlopen(url)
  14. data = json.loads(response.read().decode('utf-8'))
  15. #Format and sort the data
  16. data_list = list(data.values())
  17. data_list.sort()
  18. #Set up the application window
  19. app = QGuiApplication(sys.argv)
  20. view = QQuickView()
  21. view.setResizeMode(QQuickView.SizeRootObjectToView)
  22. #Expose the list to the Qml code
  23. my_model = QStringListModel()
  24. my_model.setStringList(data_list)
  25. view.setInitialProperties({"myModel": my_model})
  26. #Load the QML file
  27. qml_file = Path(__file__).parent / "view.qml"
  28. view.setSource(QUrl.fromLocalFile(qml_file.resolve()))
  29. #Show the window
  30. if view.status() == QQuickView.Error:
  31. sys.exit(-1)
  32. view.show()
  33. #execute and cleanup
  34. app.exec()
  35. del view