Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对象跟随鼠标位置Tkinter的X坐标_Python_Tkinter_Python 2.x - Fatal编程技术网

Python 对象跟随鼠标位置Tkinter的X坐标

Python 对象跟随鼠标位置Tkinter的X坐标,python,tkinter,python-2.x,Python,Tkinter,Python 2.x,我正在试着打乒乓球,我想让我的桨跟随鼠标的x位置。我只是把鼠标的x位置分配给了一个变量,每次我移动鼠标,它就会自动添加到变量中,然后就离开屏幕了。我现在把它改了一点,但我就是不能让它工作 错误: Traceback (most recent call last): File "Tkinter.py", line 1536, in __call__ return self.func(*args) File "animationTest.py", line 51, i

我正在试着打乒乓球,我想让我的桨跟随鼠标的x位置。我只是把鼠标的x位置分配给了一个变量,每次我移动鼠标,它就会自动添加到变量中,然后就离开屏幕了。我现在把它改了一点,但我就是不能让它工作

错误:

    Traceback (most recent call last):
    File "Tkinter.py", line 1536, in __call__
    return self.func(*args)
    File "animationTest.py", line 51, in motion
    self.diff = self.x - canvas.coords(self.paddle)
    TypeError: unsupported operand type(s) for -: 'int' and 'list'
代码:

从Tkinter导入*
导入时间
高度=500
宽度=800
颜色=‘蓝色’
尺寸=50
root=Tk()
画布=画布(根,宽度=宽度,高度=高度,背景=颜色)
canvas.pack()
班级舞会:
定义初始化(自我,画布):
self.ball=canvas.create_oval(0,0,SIZE,SIZE,fill='black')
self.speedx=6
self.speeded=6
self.active=True
self.move_active()
def ball_更新(自):
画布移动(self.ball,self.speedx,self.speedy)
位置=画布坐标(自球)

如果位置[2]>=宽度或位置[0]=高度或位置[1]没有理由读取当前坐标。您可以使用
event.x
计算新坐标,而不知道当前坐标是什么

def motion(self, event):
    '''update paddle coordinates using current mouse position'''
    canvas.coords(self.paddle, event.x-50, 0, event.x+50, 10)

这将根据鼠标位置使用新的坐标覆盖在
\uuuuu init\uuuu
方法中设置的坐标0,0100,10

canvas.coords(self.paile)
返回一个列表,其中包含左上角的X位置和Y位置以及右下角的X位置和Y位置。您需要先从列表中提取所需的位置,然后才能在减法中使用它。@Novel我正在将一个变量设置为
canvas.coords(self.palle)
,但如何获取X1?就像任何列表都使用方括号对其进行索引:
X1=canvas.coords(self.palle)[0]
。非常感谢,它解决了我的问题。您介意解释一下它是如何工作的吗?在
\uuuu init\uuuu
方法中,您将坐标设置为0,0100,10。这只是更新了那些。如果event.x为150,则坐标将更新为100、0、200、10。如果在问题主体中添加解释,此答案会更好。
def motion(self, event):
    '''update paddle coordinates using current mouse position'''
    canvas.coords(self.paddle, event.x-50, 0, event.x+50, 10)