如何在两个单独的 windows 和 canvas 中打印文本?

How to print text in two separate windows with canvas in it?

我想在一个 window 中打印文本 AAAAAAA,在另一个 window 中打印文本 BBBBBBB,但是如何使用 canvas 来实现?

from tkinter import*

root = Tk()
canvas = Canvas(root)

canvas.pack(fill=BOTH, expand=1) # Stretch canvas to root window size.

root.wm_geometry("794x370")
root.title('Map')

def toplevel():
    top = Toplevel()
    top.title('Optimized Map')
    top.wm_geometry("794x370")
    optimized_canvas = Canvas(top)
    optimized_canvas.pack(fill=BOTH, expand=1)


toplevel()

l0 = Label(canvas, text="AAAAAAA", font= "calibri 32 bold",bg="white" )
canvas.create_window(0,70, window=l0, anchor=NW)

l1 = Label(canvas, text="BBBBBBB", font= "calibri 32 bold",bg="white" )
canvas.create_window(0,70, window=l1, anchor=NW)

root.mainloop()

optimized_canvas 与第二个标签一起使用

import tkinter as tk

# ---

root = tk.Tk()

canvas = tk.Canvas(root)
canvas.pack(fill='both', expand=True)

l0 = tk.Label(canvas, text="AAAAAAA")
canvas.create_window(0, 70, window=l0, anchor='nw')

# ---

top = tk.Toplevel(root)

optimized_canvas = tk.Canvas(top)
optimized_canvas.pack(fill='both', expand=True)

l1 = tk.Label(optimized_canvas, text="BBBBBBB")
optimized_canvas.create_window(0, 70, window=l1, anchor='nw')

# ---

root.mainloop()

如果您在函数中创建 canvas,那么它会被分配给局部变量,您必须 return 它并分配给 external/global 变量才能使用它。

import tkinter as tk

# --- functions ---

def create_top(root):

    top = tk.Toplevel(root)

    local_canvas = tk.Canvas(top)
    local_canvas.pack(fill='both', expand=True)

    return local_canvas

# ---

root = tk.Tk()

canvas = tk.Canvas(root)
canvas.pack(fill='both', expand=True)

l0 = tk.Label(canvas, text="AAAAAAA")
canvas.create_window(0, 70, window=l0, anchor='nw')

# ---

optimized_canvas = create_top(root)

l1 = tk.Label(optimized_canvas, text="BBBBBBB")
optimized_canvas.create_window(0, 70, window=l1, anchor='nw')

# ---

root.mainloop()