私はPyQt5 5.9.1
(GUIフレームワーク)とpython-chess 0.21.1
(チェスライブラリ)をWindows 10
に使って、Python 3.6.3
のチェスのGUIを開発しています。私はSVGチェス盤(python-chess
で提供)でクリックされた作品の価値を得て、その作品を別の広場に移動することができます。SVGチェス盤からクリックしてください
最初のマウスを左クリックしてピースを取得した後、ユーザーから2番目のマウスの左クリックを取得し、ユーザーがクリックした四角形を取得します。その後、私のチェスのGUIは、元の四角形から目標の四角形にピースを移動させる必要があります。
ここまでは完全な作業コードです。ヒントや実際のコードの追加は大歓迎です。
#! /usr/bin/env python3
import chess
import chess.svg
from PyQt5.QtCore import pyqtSlot, Qt
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import QApplication, QWidget
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Chess Titan")
self.setGeometry(300, 300, 800, 800)
self.widgetSvg = QSvgWidget(parent=self)
self.widgetSvg.setGeometry(10, 10, 600, 600)
self.chessboard = chess.Board()
@pyqtSlot(QWidget)
def mousePressEvent(self, event):
if event.buttons() == Qt.LeftButton:
## How to get the clicked SVG chess piece?
# Envoke the paint event.
self.update()
@pyqtSlot(QWidget)
def paintEvent(self, event):
self.chessboardSvg = chess.svg.board(self.chessboard).encode("UTF-8")
self.widgetSvg.load(self.chessboardSvg)
if __name__ == "__main__":
chessTitan = QApplication([])
window = MainWindow()
window.show()
chessTitan.exec()
どうすればルールを実装できますか?白/黒は2回以上動かすことができません。最初は白と黒を移動します。また、チェスピースをボード上にランダムに配置するのではなく、チェスのルールで配置する必要があります。私はpython-chessにこの 'chess.Board()。is_valid()'関数があることを知っています。私は正確にどこに置くべきか分かりません。 'is_valid()'関数を実装することで、代替ピースの動き(White、Black ...)を保証し、チェスのルールに従ってピースを移動させるようにします。 また、キングススクエアにそのグラデーションカラーを実装するにはどうしたらいいですか? –
[Readthedocs](https://python-chess.readthedocs.io/en/latest/)をご覧ください。 –
とにかく、ありがとうございます!私は本当に助けに感謝します。私は1つの質問を持っている。 これはなぜ必要なのですか? 'else: QWidget.mousePressEvent(self、event)'? –