python - 如何在 Python 中修复“TypeError:MOVE() 采用 0 个位置参数但给出了 1 个”
问题描述
尝试基于 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()
如果它会起作用,它会有点像蚀刻草图。
解决方案
实际上,我刚刚意识到问题出在哪里,引用首先发表评论的 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()
仍然需要对代码进行一些更改,但如果不出现那个讨厌的错误,它会容易得多。
谢谢大家的建议。
推荐阅读
- javascript - 如何将数据库中的数据应用于 Three.js 交互式对象
- javascript - 将填充输出转换为实体模式(键/值)
- python - 如何在一个查询中从 3 个不同的表中检索所有数据?
- java - 排序算法,数组,最小数字到最大数字?
- text - 将多行文本插入 Google Big Query
- node.js - DynamoDB getItem 调用未给出响应
- javascript - 如何增加 React.js 中的嵌套更新限制?
- sql - 使用 WHEN 语句检查 SQL 值时出现问题
- c# - ASP.NET Core 迁移到 Core 3.0:迁移警告 CS0618 'RazorViewAttribute' 已过时
- tensorflow - 一个奇怪的错误-----InvalidArgumentError: slice index -1 of dimension 0 out of bounds.()