Моя цель - изменить цвет этикетки, чтобы она соответствовала цвету рамки, чтобы они выглядели красиво и гладко. Это мой первый программный проект, поэтому помощь очень ценится. Спасибо.
import tkinter as tk
class Main:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("250x300-1200-400")
# input field stored
self.input_a = tk.StringVar()
# label
label = tk.Label(self.root, text="Enter Value")
label.grid(row=0, column=0)
# input field
input_color_changer = tk.Entry(self.root, textvariable=self.input_a)
input_color_changer.grid(row=0, column=1)
button = tk.Button(self.root, text="Run", command=self.color_changer)
button.grid(row=1, column=1)
self.root.mainloop()
def color_changer(self):
input_b = self.input_a.get()
if input_b == "r":
self.root["bg"] = "red"
self.label["bg"] = "red" # <--- code in question
if input_b == "y":
self.root["bg"] = "yellow"
if input_b == "g":
self.root["bg"] = "green"
Main()
Всего 1 ответ
Вы должны определить свою label
как атрибут класса. Прямо сейчас это просто переменная в методе init
.
Для этого добавьте self.
приставка.
Вот ваш код, немного обновленный для наследования от Tk()
и использования атрибута класса для метки.
import tkinter as tk
class Main(tk.Tk):
def __init__(self):
super().__init__()
self.geometry("250x300-1200-400")
self.input_a = tk.StringVar()
self.label = tk.Label(self, text="Enter Value")
self.label.grid(row=0, column=0)
tk.Entry(self, textvariable=self.input_a).grid(row=0, column=1)
tk.Button(self, text="Run", command=self.color_changer).grid(row=1, column=1)
def color_changer(self):
input_b = self.input_a.get()
print(input_b)
if input_b == "r":
self["bg"] = "red"
self.label["bg"] = "red"
if input_b == "y":
self["bg"] = "yellow"
if input_b == "g":
self["bg"] = "green"
if __name__ == '__main__':
Main().mainloop()
Результаты: