Tkinter如何在使用网格满足输入字段时更改帧的颜色

2024-10-01 17:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如果用户输入“b”,我试图使帧的颜色变为黑色,如果用户输入“g”,则变为绿色。这就是我到目前为止所做的

多谢各位

from tkinter import *

class Main:
    def __init__(self):
        root = Tk()
        root.geometry("250x300-1200-400")
        frame = Frame(root)

        # input field stored
        self.input_a = StringVar()

        # input field
        input_color_changer = Entry(root, textvariable=self.input_a)
        input_color_changer.grid(row=0, column=0)

        button = Button(root, text="Run", command=self.ColorChanger)
        button.grid(row=1, column=2)


        root.mainloop()


    def ColorChanger(self):
        input_b = self.input_a.get()


        if input_b == "b":
            print("BLACK") # CHANGE COLOR OF FRAME TO BLACK
        if input_b == "g":
            print("GREEN") # CHANGE COLOR OF FRAME TO GREEN etc...

Main()


Tags: 用户selffieldinputifmaindefcolumn
1条回答
网友
1楼 · 发布于 2024-10-01 17:24:24

您不需要将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()

相关问题 更多 >

    热门问题