В конце концов решать вам. Но я лично считаю, что с ним лучше едешь, если у тебя все в классе. Так что возможно обойтись без этого типа комбинации. Потому что так оно и есть, что привело к путанице
root = Tk()
frame=Frame(root)
frame.pack()
class lab3l(Label):
def __init__(self):
super(lab3l, self).__init__()
self.lbl = Label(text="label", fg= "red")
self.lbl.pack()
def con_any(self):
self.lbl.config(fg="blue")
l=lab3l()
button=Button(text="button",command=l.con_any)
button.pack()
root.mainloop()
или
from tkinter import *
root = Tk()
frame=Frame(root)
frame.pack()
class lab3l(Label):
def __init__(self):
super(lab3l, self).__init__()
self.lbl = Label(text="label", fg= "red")
self.lbl.pack()
l=lab3l()
button=Button(text="button",command=lambda : l.lbl.config(fg="green")) # make a refernece to your class
button.pack()
root.mainloop()
Когда вы используете
super().__init__()
, вы создаете 1 метку, а затем, когда вы используетеself = Label(...)
, вы создаете другую метку. Переместитеtext="label"
иfg="red"
внутрьsuper().__init__()
и удалитеself=Label(text="label",fg="red")