【发布时间】:2018-03-06 18:39:20
【问题描述】:
我环顾四周,找不到任何我认为有帮助的东西。
我使用的代码如下:
xy = (event.xdata, event.ydata)
a = self.charges.get_charges()
a[self.closest_k][1] = xy
我在搞乱 GUI,我的问题是我需要用光标的位置“移动”GUI 上对象的位置。
xy 以数组的形式返回我需要的坐标对,self.closest_k 返回一个数字(有多个对象,self.closest_k 返回我要移动的对象的索引)。
a = [(1.0, array([ 1., 0.])), (1.0, array([-1., 0.])), (-1.0, array([ 0., -1.])), (-1.0, array([ 0., -1.]))]
问题是元组是不可变的,由于这是一个赋值,我不能更改函数get_charges()。事先我更换了:
a = self.charges.get_charges()
a[self.closest_k][1] = xy
与:
self.charges._pos[self.closest_k, :] = xy
但是在进行静态代码分析时,我收到了警告消息MyMplWidget.on_mouse_move: Access to a protected member _pos of a client class。所以我想寻求一种解决方法,我考虑过将元组转换为列表,但不会将元组中的元组转换为列表。
编辑 1:
好的,这是对我之前所做的改进。每当我尝试拖动对象时,运行代码都不会返回错误。这就是发生的事情:
[(1.0, array([ 1., 0.])), (1.0, array([-1., 0.])), (-1.0, array([ 0., 1.])), (-1.0, array([ 0., -1.]))]
(-1.0, (-0.00071672257102850523, -1.5525644333591355))
所以,我试图拖动具有原始位置 [0, -1] 的对象,这样做几乎就像创建了列表的新元素一样,它会在我拖动时覆盖原始位置,但只要我停止拖动,对象就会恢复到原来的位置。
(-1.0, (-0.00071672257102850523, -1.609902239041312))
(-1.0, array([ 0., -1.]))
在该示例中,我拖动原始位置为 [0, -1] 的对象。我一放开物体,它就恢复到原来的位置。 (这实际上并没有显示在 GUI 上,对象根本没有移动,但这是我可以处理的不同功能的问题)。 我认为目前我的编码工作方式,关于绘制 GUI,是处理绘制对象位置的函数,期望它的原始位置发生变化。但是原始位置有点“锁定”在元组内(抱歉术语不好)。我想我真的不知道该怎么办。
【问题讨论】: