Tkinter (Python) - 我什么时候应该使用画布而不是标签?

问题描述 投票:0回答:1

上一堂课,说我应该使用 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。

python tkinter tkinter-canvas tkinter-label
1个回答
0
投票

答案听起来很老套,但是当您需要 Canvas 提供的功能时,请使用 Canvas。如果您仅显示文本和/或单个图像,则没有理由使用画布。如果您需要显示多个图像,或者需要绘制几何形状,那么您应该使用 Canvas。

如果您要显示多个文本项并希望能够滚动,那么画布会更有用。框架内的标签不可滚动。

© www.soinside.com 2019 - 2024. All rights reserved.