如何修复 Python 中的“TypeError: MOVE() 需要 0 个位置参数

尝试基于 x 和 y 坐标制作一个简单的绘图程序,我正在使用一个函数在一次调用中绘制和修改坐标,而没有实际使用全局变量为函数本身赋予 valuea 以供函数修改,但它仍然看起来好像我已经给了它实际的直接输入。


在以前的版本中,我通过使用一个类来记住各个类的悬挂坐标和函数来进行绘图,但在这种情况下,输入方法略有不同,因为我使用的是按钮的缩放小部件而不是按钮和正如我之前提到的,我确实尝试在两个程序中使用全局变量,但在其中任何一个程序中都不起作用。


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()

如果它可以工作,它会有点像蚀刻草图。


喵喔喔
浏览 214回答 1
1回答

梵蒂冈之花

我实际上刚刚意识到问题是什么,引用首先发表评论的 mkiever 但我不明白,直到我对“Scale”和正在调用的命令之间的交互进行了一些单独的测试。简而言之,更容易理解被“Scale”调用的函数,因为它的命令会自动将刻度的值作为函数的输入,作为一个结果,当我定义时,我只需要在括号中声明一个变量函数,但不需要括号或输入变量来从尺度向它提供输入。例子:from tkinter import *import timewin=Tk()def P(a):    print(a)sx=Scale(win,from_=0,to=300,length=300,orient="horizontal",command=P)sx.pack()win.mainloop()仍然需要对代码进行一些修改,但是如果不出现那个讨厌的错误,它会容易得多。谢谢大家的建议。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python