为了账号安全,请及时绑定邮箱和手机立即绑定

如何绘制具有可扩展半径的圆?

如何绘制具有可扩展半径的圆?

婷婷同学_ 2021-12-21 16:54:59
我写了几行代码来绘制一个圆,我可以在其中使用滑块调整其半径。不幸的是,我的代码中肯定有一些重大错误,但由于我是初学者,因此很难找到它们。任何人都可以给我一些建议以使其工作吗?使用 tkinter 设置了一个小 GUI,包括一个Tk.Scale和一个画布。该函数drawCircle创建一个Circle艺术家。重要的部分是将滑块与功能连接起来,changeRadius但那是我不知道该怎么做的地方。看我下面的代码...import sysif sys.version_info[0] < 3:    import Tkinter as Tkelse:    import tkinter as Tkfrom matplotlib.figure import Figurefrom matplotlib import pyplot as pltfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggclass PlotCircle():    def __init__(self, master):        self.master = master        master.iconify        self.f_rad = 2  # initial value        self.frame = Tk.Frame(master)        self.frame.pack(side=Tk.TOP, fill=Tk.BOTH, expand=0)        self.radius_label = Tk.Label(self.frame, text='Radius: ')        self.radius_label.pack(side=Tk.LEFT)        self.scroll_radius = Tk.Scale(self.frame, from_=1.0, to=3.0, resolution=0.05,                                      orient=Tk.HORIZONTAL, command=lambda:self.changeRadius(self.circle))        self.scroll_radius.set(2.0)        self.scroll_radius.pack(side=Tk.LEFT)        self.image_frame = Tk.Frame(master)        self.image_frame.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)        self.fig = Figure()        self.ax = self.fig.add_subplot(111)        self.ax.set_aspect('equal')        self.canvas = FigureCanvasTkAgg(self.fig, self.image_frame)        self.canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)        self.canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)         def drawCircle(self):        self.circle = plt.Circle((0.5, 0.5), self.f_rad*0.1, color='#F97306', fill=False)        self.ax.add_artist(self.circle)        self.fig.canvas.draw()root = Tk.Tk()PlotCircle(root)root.mainloop()通过执行此代码,我收到以下错误:Tkinter 回调 Traceback 中的异常(最近一次调用最后一次):文件“C:\Users\p.schulmeyer\AppData\Local\Continuum\anaconda3\lib\tkinter__init__.py”,第 1705 行,调用 return self.func(*args ) TypeError: lambda() 需要 0 个位置参数,但给出了 1 个我也尝试过使用lambda e:或不使用 lambda,但没有任何帮助。我想我的错误一定是更根本的错误。我真的很感激任何帮助。谢谢!
查看完整描述

1 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您需要进行以下更改才能使脚本正常工作。


确保在构造函数中调用 drawCircle,因此设置了 self.circle

命令需要一个可以接受参数的函数


def __init__(self, master):

    ...

    self.scroll_radius = Tk.Scale(self.frame, from_=1.0, to=3.0, resolution=0.05,

                                  orient=Tk.HORIZONTAL, command=lambda x:self.changeRadius(x))


    ...

    self.drawCircle()  


def changeRadius(self, new_radius):

    self.circle.set_radius(float(new_radius)*0.1)

    self.fig.canvas.draw()


查看完整回答
反对 回复 2021-12-21
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信