2017-02-03 6 views
0

내 질문을 찾아 주셔서 감사합니다. 내가 여기서하려는 일에 대한 크고 작은 그림을 보여 드리겠습니다.무작위로 배치 된 (캔버스에서) 텍스트 항목의 좌표를 찾는 데 사용해야하는 Tkinter 함수는 무엇입니까?

큰 그림 : 기본적으로 첫 번째 항목 다음에 Entry 위젯에 입력 한 모든 텍스트가 줄 위젯을 통해 이전 텍스트에 연결되는 간단한 mindmapping 프로그램을 만들려고합니다. 그래서 이렇게 : 안녕하세요 ---- 저기, 그리고 안녕하세요 ---- 저기 ---- 요. 사실, 아직 탐구 한 일부 통계를 통해 링크를 재정렬 할 수있는 것과 같은 미래에 더 많은 수정이 이루어지기를 기대하지만, 기본적으로는 그렇게됩니다.

작은/특정 그림 : 이 작업을 수행하려면 캔버스에 그려진 모든 텍스트의 모든 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() 
+0

"아무 소용"무엇을 의미합니까 당신이 다음 obj_id이있는 경우 당신은 또한 할 수 있습니까? 왜 태그와 코드 기능을 사용하지 않았습니까? 태그를 사용하여 "text"태그가있는 모든 객체를 찾을 수 있으며'coords '를 사용하여 각 객체의 좌표를 얻을 수 있습니다. –

+0

나는 그 (것)들을 사용하는 방법을 알아낼 수 없었다. ^^ " – user2526448

답변

2

변수를 캔버스에 텍스트를 작성하기 전에 변수에 임의의 값을 지정하고 개체 ID 및 텍스트를 사용하여 목록에 보관하기 만하면됩니다.

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

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

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

BTW :

x,y = b.coords(obj_id) 
+0

고마워요. 나는 결코 생각하지 못했습니다! – user2526448