Я написал несколько строк кода, которые должны нарисовать круг, где я могу настроить его радиус с помощью ползунка.К сожалению, в моем коде должны быть некоторые серьезные ошибки, но поскольку я новичок, их трудно найти.Кто-нибудь может дать мне какой-нибудь совет, чтобы он работал?
Крошечный графический интерфейс был настроен с использованием tkinter, включая Tk.Scale
и холст.Функция drawCircle
создает художника Circle
.Важной частью является соединение слайдера с функцией changeRadius
, но я не знаю, что делать.См. Мой код ниже ...
import sys
if sys.version_info[0] < 3:
import Tkinter as Tk
else:
import tkinter as Tk
from matplotlib.figure import Figure
from matplotlib import pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
class 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()
def changeRadius(self, circ):
self.f_rad = float(self.scroll_radius.get())
print(self.f_rad)
circ.set_radius(self.f_rad)
self.fig.canvas.draw()
root = Tk.Tk()
PlotCircle(root)
root.mainloop()
При выполнении этого кода я получаю следующую ошибку:
Исключение в обратном вызове Tkinter (последний вызов последним): Файл "C: \ Users \ p.schulmeyer \ AppData \ Local \ Continuum \ anaconda3 \ lib \ tkinter__init __. Py ", строка 1705, в вызове return self.func (* args) TypeError: lambda () принимает 0 позиционных аргументов, но 1 задано
Я также пытался использовать lambda e:
или вообще не использовать лямбду, но ничего не помогло.Я предполагаю, что моя ошибка должна быть чем-то более фундаментальным.Я действительно ценю любую помощь.Спасибо!