【问题标题】:How to show overlapped Label and text simultaneously in Canvas by Tkinter?如何通过 Tkinter 在 Canvas 中同时显示重叠的标签和文本?
【发布时间】:2022-12-30 21:08:30
【问题描述】:

我想在 Tkinter 的 Canvas 中同时显示重叠的标签和文本。 这是我的数据。

import tkinter as tk  # python 3

def populate(frame):
    '''Put in some fake data'''
    for row in range(100):
        tk.Label(frame, text="%s" % row, width=3, borderwidth="1", bg="red",
                 relief="solid").grid(row=row, column=0)
        t="this is the second column for row %s" %row
        tk.Label(frame, text=t,bg="pink").grid(row=2*row, column=1)

def onFrameConfigure(canvas):
    '''Reset the scroll region to encompass the inner frame'''
    canvas.configure(scrollregion=canvas.bbox("all"))

root = tk.Tk()
canvas = tk.Canvas(root, borderwidth=0,bg="blue")
frame = tk.Frame(canvas,bg="yellow")
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((0,0), window=frame, anchor="nw")
frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
populate(frame)
canvas.create_text(250,300,text="10kV/35kV")

root.mainloop()

但是现在重叠的文本(“10kV/35kV”)被隐藏了,如图所示。

有没有办法显示整个文本,即使它与标签重叠?

【问题讨论】:

  • 与此 question 类似的问题。基本上你不能将文本项放在画布中的 tkinter 小部件上。
  • 您不能将文本项放置在画布窗口项之上,但可以将画布窗口项放置在其他窗口项之上。限制是创建窗口项的顺序是静态的,因此“canvas.lift”和“canvas.lower”将无效。

标签: python tkinter canvas frame


【解决方案1】:

是的,您可以看到全文。

改变这个:

canvas.create_text(250,300,text="10kV/35kV")

到:

canvas.create_text(250,300,text="10kV/35kV")

图像输出:

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多