hallöche,
gibt es eigentlich noch eine sinvollere Möglichkeit in einem Canvas Widget einen Punkt zu setzen als durch ein verkleinertes viereck???
thx
mfg cime
Punkt mit Canvas
ROTFL, YMMDmawe hat geschrieben:Code: Alles auswählen
canvas.create_text(x,y,text=".")
joe
thx .... (Kreativität ist alles *g*)

hier auch ma gleich meine anwendung, ich hab da nämlich so n kleines prob:
eigentlich soll die Anwendung die Eingabewerte (nur int) grafisch darstellen mein prob ist aber, dass die neuen Werte nicht anzeigt, da er ja nicht wieder zur mainloop zurückkommt ... ich dachte mti root.update (markierte Zeile) könnte man die Bildschirmanzeige akutalisieren, aber es klappt nicht, könnte mir jemand sagen wieso???
hier der quellcode:
PS: dieser kleine Umweg über die Reader-KLasee ist notwendig, da von einer solchen KLasse später mal die Werte ausgelesen werden sollen ...




hier auch ma gleich meine anwendung, ich hab da nämlich so n kleines prob:
eigentlich soll die Anwendung die Eingabewerte (nur int) grafisch darstellen mein prob ist aber, dass die neuen Werte nicht anzeigt, da er ja nicht wieder zur mainloop zurückkommt ... ich dachte mti root.update (markierte Zeile) könnte man die Bildschirmanzeige akutalisieren, aber es klappt nicht, könnte mir jemand sagen wieso???
hier der quellcode:
Code: Alles auswählen
#show.py
#editor: cime
import math
from Tkinter import *
from Canvas import *
def Punkt(master,x,y):
Rectangle(master,(2*x,2*y),(2*x+1,2*y+1))
def show_graph2(master,source,start,end,neg_x=True,neg_y=True):
can=Canvas(master,bg='white')
can.pack()
if neg_y:
middle_y=int(can.config()['height'][-1])/4
else:
middle_y=0
if neg_x:
middle_x=int(can.config()['width'][-1])/4
else:
middle_x=0
#Koordinatensystem zeichnen
Rectangle(can,(0,2*middle_y),(4*middle_x,2*middle_y+1))
Rectangle(can,(2*middle_x,0),(2*middle_x+1,4*middle_y))
#Punkte mit Verbindungen setzen
y_before=0
for x in xrange(start,end):
y=source.read()
if y is None:
return
Punkt(can,middle_x+x,middle_y-y)
diff=y_before-y
if abs(diff)>1:
for i in xrange(y_before,y,-abs(diff)/diff):
Punkt(can,middle_x+x-1,middle_y-i)
master.update()###########markierte Zeile ############
yield True
class reader:
def __init__(self):
print 'gestartet'
self.value=None
def put(self,value):
self.value=value
def read(self):
return self.value
def begin(root):
x.destroy()
s=reader()
get_back=True
while get_back:
s.put(input('naechster Wert: '))
get_back=show_graph2(root,s,-100,100)
if __name__=='__main__':
root=Tk()
x=Button(root,text='Anfangen',command=lambda x=root: begin(x))
x.pack()
root.mainloop()
Habe ich jetzt nicht getestet:
Aber macht mal ein can.update()
oder das can.pack()
erst nachdem du Deine Zeichnung gemacht hast.
Gruß, Felix
Aber macht mal ein can.update()
oder das can.pack()
erst nachdem du Deine Zeichnung gemacht hast.
Gruß, Felix
ich möchte aber, dassnach jeder Eingabe auch der Punkt sofort gezeichnet wird ... aber trotzdem dankeAnonymous hat geschrieben:Habe ich jetzt nicht getestet:
Aber macht mal ein can.update()
oder das can.pack()
erst nachdem du Deine Zeichnung gemacht hast.
Gruß, Felix