2017-02-03 2 views
0

Vielen Dank für die Untersuchung meiner Frage. Ich werde versuchen, dir ein großes und kleines Bild von dem zu geben, was ich hier versuche.Welche Tkinter-Funktionen sollte ich verwenden, um die Koordinaten eines zufällig platzierten (im Canvas) Texteintrags zu finden und wie?

Großbild: Also im Grunde versuche ich ein einfaches Mindmapping-Programm zu machen, bei dem nach dem ersten Eintrag jeder Text, den ich in das Eingabe-Widget eintrage, mit dem vorherigen Text über ein Linienwidget verknüpft wird. Also so: Hallo ---- Dort, und dann Hallo ---- Dort ---- Yo. Eigentlich hoffe ich auf weitere Modifikationen in der Zukunft, wie zum Beispiel die Möglichkeit, die Links über einige Metriken neu zu arrangieren, die ich bisher erforscht habe, aber das ist im Grunde genommen so.

Klein/Spezifisch Bild: Ich erkenne, dass ich einen Weg finden muss, um alle xy-Koordinaten jedes auf der Leinwand gezeichneten Textes zu erhalten (Text, den ich auf der Leinwand gezeichnet habe, indem ich das Zufallsprinzip verwendete Funktion). Ich brauche die Koordinaten des ersten Textes und die Koordinaten des zweiten Textes, damit ich die Linien verwenden kann, um die zwei Texte visuell zu verbinden. Ich dachte daran, ein Array zu verwenden, um alle eingegebenen Texte aufzulisten, aber mir ist klar, dass nur der Text und nicht der Ort des Textes auf der Leinwand gespeichert wird. Ich habe die Verwendung von Tags erkundet oder die Coords-Funktionen oder die bbox-Funktion verwendet, aber ohne Erfolg. Irgendwelche Hinweise darauf, wie man das macht? Ich würde es sehr zu schätzen wissen, Danke. :)

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

was bedeutet "ohne Erfolg" bedeuten? Warum funktioniert die Verwendung von Tags und der Coords-Funktion nicht? Sie können Tags verwenden, um alle Objekte mit dem Tag "text" zu finden, und Sie können mit "coords" die Koordinaten jedes Objekts ermitteln. –

+0

Ich konnte nicht herausfinden, wie man sie benutzt. ^^ " – user2526448

Antwort

2

einfach zufällige Variablen Werte zuweisen, bevor Sie es verwenden, um Text auf Leinwand zu erstellen, und halten Sie auf die Liste mit Objekt-ID und Text.

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

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

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

BTW: wenn Sie obj_id haben, dann können Sie auch tun

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

danke. Ich habe nie darüber nachgedacht! – user2526448

Verwandte Themen