Как исправить 'TypeError: MOVE () принимает 0 позиционных аргументов, но 1 был задан' в Python - PullRequest
0 голосов
/ 13 января 2019

Пытаясь создать простую программу для рисования, основанную на координатах x a y, я использую функцию для рисования и изменения координат за один вызов, фактически не присваивая значение самой функции, используя глобальные переменные, для чего требуется модификация функцией но он все равно выглядит так, как будто я дал ему реальный прямой ввод.

В предыдущей версии я ушел, используя класс для запоминания координат перемещения и функций соответствующего класса для рисования, но в этом случае метод ввода немного отличается, так как я использую виджет масштаба вместо кнопки и, как я уже упоминал ранее, я попытался использовать глобальные переменные в обеих программах, и ни в одной из них это не работает.

from tkinter import *

win=Tk()
win.title("Etch a Schetch")
win.configure(background="grey")
win.configure(bd=5)

global xa
xa=0
global ya
ya=0

def MOVE():
    tabla.create_line(xa,ya,sx.get(),sy.get())
    xa=sx.get()
    ya=sy.get()


tabla=Canvas(win,width=300,height=300)


sx=Scale(win,from_=0,to=300,length=300,orient="horizontal",command=MOVE)

sy=Scale(win,from_=0,to=300,length=300,command=MOVE)

ex=Button(win,text="Exit",command=exit)


tabla.grid(row=1,column=1)
sx.grid(row=2,column=1)
sy.grid(row=1,column=2)
ex.grid(row=2,column=2)

win.mainloop()

Если бы это сработало, это было бы как гравюра.

1 Ответ

0 голосов
/ 15 января 2019

Я на самом деле только что понял, в чем проблема, чтобы процитировать mkiever, который прокомментировал первым, но я не понимал, пока не провел какое-то индивидуальное тестирование взаимодействия между «Scale» и вызывающей командой. Короче говоря, проще понять функцию, вызываемую «Scale», поскольку ее команда автоматически принимает значение масштаба как входные данные для функции, в результате мне нужна только одна объявленная переменная в парантезе, когда я определяю функция, но никакие переменные или входные переменные не требуются для ввода данных из шкалы.

Пример:

from tkinter import *
import time

win=Tk()

def P(a):
    print(a)

sx=Scale(win,from_=0,to=300,length=300,orient="horizontal",command=P)
sx.pack()

win.mainloop()

Некоторое изменение в коде все еще требуется, но это будет намного легче без появления этой надоедливой ошибки.

Спасибо всем за советы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...