Я следовал этому уроку о том, как написать шахматную программу на Python.
. Он использует python -chess . Функции этого движка, очевидно, возвращают данные SVG, которые можно использовать для отображения шахматной доски.
import chess
import chess.svg
from IPython.display import SVG
board = chess.Board()
SVG(chess.svg.board(board=board,size=400))
, но когда я запускаю этот код, все, что я вижу, это строка в терминале без изображения.
<IPython.core.display.SVG object>
В учебном пособии передается ссылка на ноутбуки Jupyter и способы их использования для отображения изображений SVG. У меня нет опыта работы с Jupyter Notebooks, и, хотя я установил пакет из pip, и немного подумал о том, как его использовать, я не смог добиться большого прогресса в отношении моей первоначальной проблемы с шахматной доской. Но у меня есть опыт разработки Qt с использованием C ++, и, поскольку Qt имеет Python привязок, я решил использовать эти привязки.
Вот что я написал:
import sys
import chess
import chess.svg
from PyQt5 import QtGui, QtSvg
from PyQt5.QtWidgets import QApplication
from IPython.display import SVG, display
app = QApplication(sys.argv);
board = chess.Board();
svgWidget = QtSvg.QSvgWidget(chess.svg.board(board=board, size=400));
#svgWidget.setGeometry(50,50,759,668)
svgWidget.show()
sys.exit(app.exec_())
Окно Qt открывается и ничего не показывает, и в терминале я вижу много текста - (очевидно, данные SVG заканчиваются в консоли, а не в открывшемся окне Qt?).
Я решил установить библиотеку SVG под python, поэтому я установил drawSvg из pip. Но, похоже, библиотека генерирует изображения SVG. И это было бесполезно для меня.
Что еще более странно, увидев этот ТАК вопрос , я попробовал следующее:
import sys
import chess
import chess.svg
from PyQt5 import QtGui, QtSvg
from PyQt5.QtWidgets import QApplication
from IPython.display import SVG, display
app = QApplication(sys.argv);
board = chess.Board();
svgWidget = QtSvg.QSvgWidget('d:\projects\python_chess\Zeichen_123.svg');
#svgWidget.setGeometry(50,50,759,668)
svgWidget.show()
sys.exit(app.exec_())
И это показало изображение - изображение SVG! В чем же разница между моим делом и этим делом?
Вопрос: Итак, мой вопрос: что я делаю неправильно в случае данных SVG на шахматной доске? Данные SVG, сгенерированные библиотекой python -chess, не совместимы с QtSvg?