我正在Python 3.6.3
使用PyQt5 5.9.1
(GUI 框架)和python-chess 0.21.1
(国际象棋库)在Windows 10
. 我想获取在 SVG 棋盘(由 提供python-chess
)上单击的棋子的值,以便我可以将该棋子移动到另一个方格。
在第一次鼠标左键单击并获取该块后,我想从用户那里获得第二次鼠标左键单击并获取用户单击的方块。然后我的国际象棋 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()