上一堂课,说我应该使用 Canvas 对象来显示文本。为什么这比使用标签更好?似乎是一种更复杂的仅显示文本框的方法。
在下面的示例中,请参阅相关行的“# Create canvas”和“# Create labels”注释。
from tkinter import *
# Set globals, constants -------------------------------------------------------------
BG_COLOR = "#375362"
FG_COLOR = "white"
FONT = ("Arial", 20, "italic")
PADDING = 20
QBOX_HEIGHT = 250
QBOX_WIDTH = 300
# Create UI for Quizzler game --------------------------------------------------------
class QuizUI:
def __init__(self):
# Create window
self.window = Tk()
self.window.title("Quizzler")
self.window.config(padx=PADDING, pady=PADDING, bg=BG_COLOR)
# Create canvas
self.qbox_canvas = Canvas(width=QBOX_WIDTH, height=QBOX_HEIGHT)
self.qbox_canvas.grid(row=1, column=0, columnspan=2, padx=PADDING, pady=PADDING)
# Create labels
self.score_label = Label(text="Score: 0", bg=BG_COLOR, fg=FG_COLOR, font=FONT)
self.score_label.grid(row=0, column=1, padx=PADDING, pady=PADDING)
self.question_label = self.qbox_canvas.create_text(QBOX_WIDTH / 2, QBOX_HEIGHT / 2, text="PLACEHOLDER", font=FONT)
# Run window loop
self.window.mainloop()
预期:只需使用标签。画布似乎没有必要。 实际:讲师推荐的Canvas。
答案听起来很老套,但是当您需要 Canvas 提供的功能时,请使用 Canvas。如果您仅显示文本和/或单个图像,则没有理由使用画布。如果您需要显示多个图像,或者需要绘制几何形状,那么您应该使用 Canvas。
如果您要显示多个文本项并希望能够滚动,那么画布会更有用。框架内的标签不可滚动。