Python 3.x 更新tkinter窗口以更改文本背景

Python 3.x 更新tkinter窗口以更改文本背景,python-3.x,Python 3.x,尝试在简单加法测验答案的文本字段中显示绿色或红色背景。 目前在PyCHarm投诉: 条目。网格配置(后台=“红色”) TypeError:grid_configure()缺少1个必需的位置参数:“self” 0 我似乎无法理解这一点。感谢您的帮助。 以下是迄今为止的代码: from tkinter import * import random class MainGUI: def __init__(self): window = Tk() # Create the window

尝试在简单加法测验答案的文本字段中显示绿色或红色背景。 目前在PyCHarm投诉: 条目。网格配置(后台=“红色”) TypeError:grid_configure()缺少1个必需的位置参数:“self” 0

我似乎无法理解这一点。感谢您的帮助。 以下是迄今为止的代码:

from tkinter import *
import random

class MainGUI:

def __init__(self):
    window = Tk() # Create the window
    window.title("Addition Quizzer") # Set the title
    #window.width(len(window.title()))

    self.number1 = random.randint(0, 9)
    self.number2 = random.randint(0, 9)

    Label(window, text = "+").grid(row = 2, column = 1, sticky = E)
    Label(window, text = "Answer").grid(row = 3, column = 1, sticky = W)

    self.firstNumber = StringVar()
    Label(window, text = self.number1, justify = RIGHT).grid(row = 1, column = 2)

    self.secondNumber = StringVar()
    Label(window, text = self.number2, justify = RIGHT).grid(row = 2, column = 2)

    self.entry = StringVar()
    Entry(window, textvariable = self.entry, justify = CENTER, width = 4, background = "grey").grid(row = 3, column = 2)


    Button(window, text = "Answer:", command = self.computeAnswer).grid(row = 4, column = 1, sticky = E)
    self.result = StringVar()
    Label(window, textvariable = self.result).grid(row = 4, column = 2)

    window.mainloop() # Create the event loop


def computeAnswer(self):
    self.result.set(format(self.number1 + self.number2))
    if self.entry == self.result:
        self.displayCorrect()
    else:
        self.displayIncorrect()

def displayCorrect(self):
    # self.correctAnswer = "Correct"
    # Label(self.window, text = self.correctAnswer, background = "green", justify = RIGHT).grid(row = 5, column = 2)
    Entry.grid_configure(background = "green")

def displayIncorrect(self):
    # self.incorrectAnswer = "Incorrect"
    # Label(self.window, text = self.incorrectAnswer, background = "red", justify = RIGHT).grid(row = 5, column = 2)
    Entry.grid_configure(background = "red")

MainGUI()

如果您阅读并遵循了帮助中心的资料,那么您的代码将减少到以下内容,仍然会收到相同的错误消息

from tkinter import *
Entry.grid_configure()
该消息指出Python实例方法需要一个实例。这通常是通过对实例而不是类调用方法来实现的。否则,必须给出一个实例作为第一个参数。考虑

mylist = []
mylist.append(1)
list.append(mylist, 2)
print(mylist)
# [1, 2]
您需要保存对输入框的引用。改变

    Entry(window, ..., background = "grey").grid(...)

我不知道调用.grid\u configure(background=color)是否可以满足您的需要。 我相信这会的

    self.entry['background'] = 'red'

所有的类方法都需要在class语句下缩进。我把这一点留给你。将行数限制为80个字符会使代码更易于阅读,并粘贴到一个80个字符宽的编辑器中。如果你不理解我的答案(这是正确的),请阅读CPython附带的Python教程中有关调用方法的部分。
    self.entry['background'] = 'red'