Вы не вставляете событие Frame
в окно (вы не используете pack()
/ grid()
/ place()
), но если вы даже поместите его в окно, оно будет пустым, поэтому у него не будет высоты и ширина, поэтому вы не увидите разницы.
Лучше использовать root
для этого, но вам нужно self.root
для доступа к нему в другой функции, а затем вы можете сделать
self.root['bg'] = 'green'
# from tkinter import * # PEP8: not preferred
import tkinter as tk
class Main:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("250x300-1200-400")
#self.frame = tk.Frame(self.root)
#self.frame.pack()
# input field stored
self.input_a = tk.StringVar()
# input field
input_color_changer = tk.Entry(self.root, textvariable=self.input_a)
input_color_changer.grid(row=0, column=0)
button = tk.Button(self.root, text="Run", command=self.color_changer)
button.grid(row=1, column=2)
self.root.mainloop()
def color_changer(self): # PEP8: lower_case_names for methods/functions/variables
input_b = self.input_a.get()
if input_b == "b":
print("BLACK") # CHANGE COLOR OF FRAME TO BLACK
self.root['bg'] = 'black'
if input_b == "g":
print("GREEN") # CHANGE COLOR OF FRAME TO GREEN etc...
self.root['bg'] = 'green'
Main()