@V0X31

Как исправить ошибку — « mouse_position_print() takes 0 positional arguments but 2 were given»?

import numpy as np
from random import *
from tkinter import *


class Window():
    window = Tk()
    window.title("paint")
    window.geometry("1280x720+300+150")

    def mouse_position_print ():
        x = window.winfo_pointerx() - window.winfo_windowx()
        y = window.winfo_pointery() - window.winfo_windowy()
        print ("Координаты мыши: x={} y={}".format(x,y))


paint_window = Window()

paint_window.window.bind('<Motion>', paint_window.mouse_position_print)

paint_window.window.mainloop()


5fe86b29a64da892418014.png

При движении мышью выдаёт такую ошибку. Пробовал изменить строчку - "def mouse_position_print ():" на "def mouse_position_print (x,y):", но тогда пишет, что переменная window не определена. Извините за наверняка глупый вопрос. Но я понимаю в чём дело.
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
@o5a
Потому что функции, используемой в bind пытается передать 2 параметра:
1 - self, т.к. она прописана как метод объекта paint_window
2 - событие, которое передается всем функциям при использовании bind

Соответственно эти параметры и надо прописать для своей функции
def mouse_position_print (self, event):
И по логике наверное хотели создать объекты window для экземпляра класса, т.е. надо их вынести в init
def __init__(self):
    self.window = Tk()
    self.window.title("paint")
    self.window.geometry("1280x720+300+150")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы