有什么办法可以在矩形内创建文本?

时间:2019-08-18 15:48:46

标签: tkinter tkinter-canvas

我对Tkinter还是很陌生,我想在矩形内添加文本和按钮,以便在设置动画时会随矩形一起移动。

我尝试在effbot.org等网站上进行研究,但似乎找不到答案。这可能吗?如果可以,怎么办?

2 个答案:

答案 0 :(得分:0)

下面是使用Tkinter在python3中向画布添加按钮和标签的代码。

from tkinter import *

root = Tk()

def clicked(event):
    print("pressed")

canvas1 = Canvas(root, relief = FLAT, background = "#D2D2D2")
canvas1.pack()
label = Label(root, text="Hello world")
label.pack()
buttonBG = canvas1.create_rectangle(0, 0, 100, 30, fill="grey40", outline="grey60")
buttonTXT = canvas1.create_text(50, 15, text="click")
canvas1.tag_bind(buttonBG, "<Button-1>", clicked) ## when the square is clicked runs function "clicked".
canvas1.tag_bind(buttonTXT, "<Button-1>", clicked) ## same, but for the text.
root.mainloop()

答案 1 :(得分:0)

在处理画布时,简单的解决方案是创建文本,获取坐标,然后根据这些坐标绘制一个矩形。如果对文本和矩形使用相同的标记,则可以移动它们或将它们配置为一个。

这是一个简单的例子:

def create_item(canvas, x, y, tag):
    tags = (tag,)
    button = tk.Button(canvas, text="x")
    canvas.create_text(50,100, text="Hello, world", fill="white", tags=tags)
    canvas.create_window(50,130, window=button, tags=tags)

    x0, y0, x1, y1 = canvas.bbox(tag)
    margin = 4
    coords = (x0-margin, y0-margin, x1+margin, y1+margin)
    id=canvas.create_rectangle(coords, outline="white", fill="red", tags=tag)
    canvas.lower(id)

您可以像这样使用它:

canvas = tk.Canvas(...)
...
create_item(10, 10, "item")
canvas.move("item", 1,1)
...