尝试基于 x 和 y 坐标制作一个简单的绘图程序,我正在使用一个函数在一次调用中绘制和修改坐标,而没有实际使用全局变量为函数本身赋予 valuea 以供函数修改,但它仍然看起来好像我已经给了它实际的直接输入。在以前的版本中,我通过使用一个类来记住各个类的悬挂坐标和函数来进行绘图,但在这种情况下,输入方法略有不同,因为我使用的是按钮的缩放小部件而不是按钮和正如我之前提到的,我确实尝试在两个程序中使用全局变量,但在其中任何一个程序中都不起作用。from tkinter import *win=Tk()win.title("Etch a Schetch")win.configure(background="grey")win.configure(bd=5)global xaxa=0global yaya=0def 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 回答

梵蒂冈之花
TA贡献1900条经验 获得超5个赞
我实际上刚刚意识到问题是什么,引用首先发表评论的 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()
仍然需要对代码进行一些修改,但是如果不出现那个讨厌的错误,它会容易得多。
谢谢大家的建议。
添加回答
举报
0/150
提交
取消