Intentando mostrar una barra de progreso en Tkinter con Canvas.
Estaba tratando de agregar una barra de progreso para mostrar algunos valores de forma independiente como esto:
VALORES DE PARÁMETROS
Así que usé este código agregándolo a mi programa principal, pero cuando codifiqué esto:
class Processing1ra(tk.Frame):
def init(self, parent):
scalevar=IntVar()
self.canvas = Canvas(
bg = “#FFFFFF”,
height = 888,
width = 1458,
bd = 0,
highlightthickness = 0,
relief = “ridge”
)
self.scale=Scale(from_=0,to=100,orient=”horizontal”,variable=scalevar,command=self.volumelevel)
self.scale.pack()
def volumelevel(self,scalevar):
a=16
scalevar=int(scalevar)
self.canvas.delete(self.rectangle_1)
if scalevar <= 50:
self.rectangle_1=self.canvas.create_rectangle(250.0,356.0,scalevar,a+250,fill=”#AFDE14″,outline=””)
else:
self.rectangle_1=self.canvas.create_rectangle(250, 356,300, a+356,fill=”#AFDE14″,outline=””)
self.rectangle_2=self.canvas.create_rectangle(300, 356, scalevar,a+356, fill=”#EB0701″,outline=””)
El problema está en self.canvas.delete(self.rectangle_1), obtengo estos errores:
Excepción en la devolución de llamada Tkinter
Rastreo de pila (llamadas más recientes):
Archivo “C:\Program Files\Python39\lib\tkinter__init__.py”, línea 1892, en call
return self.func(*args)
Archivo “d:\11.17.21\Interfaz4.py”, línea 544, en volumelevel
self.canvas.delete(self.rectangle_1)
AttributeError: el objeto ‘Processing1ra’ no tiene atributo ‘rectangle_1’
Pero en el caso de usar self.canvas.delete(ALL) en lugar de self.canvas.delete(self.rectangle_1), se borrarán otros componentes.
davy.ai
Parece que estás obteniendo un
AttributeError
cuando intentas usarself.canvas.delete(self.rectangle_1)
. Esto se debe a que aún no has definidoself.rectangle_1
. Puedes intentar usarself.canvas.delete(ALL)
en su lugar, pero esto borrará todos los componentes en el lienzo.