1 回答

TA貢獻1784條經驗 獲得超8個贊
我認為您對 Python 的腳本性質感到困惑。你說,你有在 C++ 下開發 Qt 的經驗。您不會先在那里創建一個主窗口小部件,然后將您的 SVG 小部件添加到其中,您將在其中調用或加載 SVG 數據嗎?
我會像這樣重寫你的代碼。
import chess
import chess.svg
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import QApplication, QWidget
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 1100, 1100)
self.widgetSvg = QSvgWidget(parent=self)
self.widgetSvg.setGeometry(10, 10, 1080, 1080)
self.chessboard = chess.Board()
self.chessboardSvg = chess.svg.board(self.chessboard).encode("UTF-8")
self.widgetSvg.load(self.chessboardSvg)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
編輯
如果您將繪畫功能添加到 MainWindow 類會更好。因為可以肯定的是,在將來,每當您移動棋子時,您都會想多次重繪棋盤圖像。所以我會做這樣的事情。
def paintEvent(self, event):
self.chessboardSvg = chess.svg.board(self.chessboard).encode("UTF-8")
self.widgetSvg.load(self.chessboardSvg)
添加回答
舉報