【发布时间】:2021-04-17 05:34:17
【问题描述】:
我正在尝试使用 pyqt5 对回溯算法进行可视化,并且我创建了一个类来在 GUI 中进行更新时发出信号,但每当我尝试调用发出信号的方法时,我都会得到一个错误,那是因为我使用QtCore.QMetaObject.invokeMethod 来调用该方法,从我发现这个方法只调用qt 和that question 已知的槽和方法我发现我可以使用Q_INVOKABLE 来解决这个问题,但我仍然不知道如何在 python 中做到这一点,这是发出信号的类:
class signal_emitter(QtCore.QObject):
answer_signal = QtCore.pyqtSignal(int, int, str)
def solve(self, grid, row, column):
row, column = find_empty_cell(grid, row)
if (row, column) == (None,None):
return True
for num in range(1, 10):
if valid_row(grid[row], num
) and valid_column(grid, column, num
) and valid_box(grid, row, column, num):
grid[row][column] = num
self.answer_signal.emit(row, column, str(num))
if self.solve(grid, row, column):
return True
grid[row][column] = 0
self.answer_signal.emit(row, column, "0")
return False
到目前为止,代码中的所有内容都很好,只是我无法调用代码 sn-p 中称为 (solve) 的方法,因此我需要一种使用 Q_INVOKABLE 的方法或对类进行修改,以便我可以调用一个可以调用solve的槽方法
提前致谢
【问题讨论】:
标签: python python-3.x pyqt pyqt5