Python 3.x 更新tkinter窗口以更改文本背景
尝试在简单加法测验答案的文本字段中显示绿色或红色背景。 目前在PyCHarm投诉: 条目。网格配置(后台=“红色”) TypeError:grid_configure()缺少1个必需的位置参数:“self” 0 我似乎无法理解这一点。感谢您的帮助。 以下是迄今为止的代码: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
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'