我应该使用哪些Tkinter函数来查找随机放置(在画布中)文本条目的坐标以及如何?

时间:2017-02-03 13:27:05

标签: python tkinter tkinter-canvas

感谢您查看我的问题。我会尝试给你一个关于我在这里尝试做什么的大大小小的图片。

大图: 所以,基本上我试图制作一个简单的思维导图程序,在第一个条目之后,我输入到Entry小部件的每个文本都通过一个行小部件链接到前一个文本。所以这样:你好----那里,然后你好----有----哟。实际上,我希望将来能够通过我已经探索过的一些指标重新安排链接进行更多修改,但基本上就是这样。

小/特定图片: 我意识到为了做到这一点,我将不得不找到一种方法来获取画布上绘制的每个文本的所有xy坐标(我使用随机函数在画布上绘制的文本)。我需要第一个文本的坐标和第二个文本的坐标,所以我可以使用它们绘制线来直观地链接两个文本。我想使用数组列出所有输入的文本,但我意识到只存储文本而不是文本在画布上的位置。我已经探索过使用标签,或使用coords函数或使用bbox函数,但无济于事。关于如何解决这个问题的任何线索?我非常感谢,谢谢。 :)

import Tkinter
import random

a = Tkinter.Tk()

b = Tkinter.Canvas(a, width=1000, height=500)
b.pack()

def c(event):
    b.create_text(random.randint(50,940), random.randint(50,480), anchor="center", text=d.get())
    f.append(d.get())
    d.delete(0, 'end')
    print f
    #this function creates a randomly located text taken from the entry widget below and, at the same time, appends the text in the list known as f''

d = Tkinter.Entry(a)
d.pack()
d.bind("<Return>", c)
d.focus()

b.create_line(300, 250, 600, 290)
#this is my very early attempt at linking text inputted and drawn on the Canvas

f = []


a.mainloop()

1 个答案:

答案 0 :(得分:2)

在将变量用于在画布上创建文本之前,只需将随机值分配给变量,并使用对象ID和文本保留在列表中。

x = random.randint(...) 
y = random.randint(...) 

obj_id = b.create_text(x, y, ...) 

f.append([x, y, obj_id, d.get()])

BTW:如果您有obj_id,那么您也可以

x,y = b.coords(obj_id)