Атрибуты экземпляра не могут передаваться из вложенных функций.Python

Программы на Python
Ответить
Anonymous
 Атрибуты экземпляра не могут передаваться из вложенных функций.

Сообщение Anonymous »

При использовании программного обеспечения для проектирования графического пользовательского интерфейса переменная экземпляра не может быть доступна снаружи после изменения внутри вложенной функции, вызываемой событиями мыши, такими как on_motion.
Изображение
Атрибут экземпляра хранит кривую Безье на рисунке, но поскольку обновленное значение не передается, график справа отображает начальное значение, а график слева отображается правильно.
Я пытался использовать механизм сигналов для передачи значений, но это не удалось.
Как показано в коде сохраненные данные указывают на то, что концентратор1 и концентратор3 идентичны, а концентратор2 был изменен с помощью события мыши. Я хочу, чтобы матрица, передаваемая в Hub3, была такой же, как Hub2, а не с исходным значением.
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('Bezier_fit.ui', self)

self.shroud_bezier_line, self.hub_bezier_line = bezier_point(self.inter_point, self.ctr_point)
# np.savetxt("hub1",self.hub_bezier_line)
self.bezier_line.clicked.connect(lambda: self.set_ctr_point())

def set_ctr_point(self):
def on_motion(event):
if dragging and event.inaxes == self.plotCanvas_bezier.ax:
self.ctr_point = renew_data(self.ctr_point, event.xdata, event.ydata, current_index)
self.shroud_bezier_line,self.hub_bezier_line=bezier_point(self.inter_point,
self.ctr_point)
# np.savetxt("hub2",self.hub_bezier_line)

cid_motion = self.plotCanvas_bezier.ax.figure.canvas.mpl_connect('motion_notify_event', on_motion)

class SecondWindow(MainWindow):
def __init__(self):
super().__init__()
uic.loadUi('streamline.ui', self)

# np.savetxt("hub3",self.hub_bezier_line)


Подробнее здесь: https://stackoverflow.com/questions/791 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»