Hallo
Wenn ich mit Xturtle eine Haus male und es dann Fülle erkennt ja xturtle das Haus ja als "objekt", meine frage nun kann ich das Haus auch als Button benützen?
Gruß
Andyh
Mit Xturtle/Canvas einen Button malen
Zuletzt geändert von Andyh am Samstag 1. November 2008, 13:34, insgesamt 1-mal geändert.
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ja und nein.
Wenn du das Haus als Turtle-Shape verwendest bzw. verwenden kannst (als Polygon oder aus Polygonen zusammengesetzt oder als Gif-Datei), dann ja. Über die onclick() Methode einer Turtle kannst du einen Mausklick-Event verarbeiten.
Wenn du das Haus einfach nur gezeichnet hast - auch wenn es gefüllt wurde - dann kannst du es nicht als Objekt an ein Ereignis binden. Die Lösung sähe dann so aus, dass du bei einem Mausklick die Koordinaten der Maus abfragst und prüfst, ob diese innerhalb des Hauses liegen.
Evtl. lohnt sich ein Blick auf die xturtle-Alternative frog. Damit kannst du zwar ein gezeichnetes Haus auch nicht zum Objekt machen, aber die Frösche (= Turtles) haben eine Methode button(text,command), mit denen sich echte Buttons im Fenster erzeugen lassen - das geht mit xturtle nicht.
Wenn du das Haus als Turtle-Shape verwendest bzw. verwenden kannst (als Polygon oder aus Polygonen zusammengesetzt oder als Gif-Datei), dann ja. Über die onclick() Methode einer Turtle kannst du einen Mausklick-Event verarbeiten.
Wenn du das Haus einfach nur gezeichnet hast - auch wenn es gefüllt wurde - dann kannst du es nicht als Objekt an ein Ereignis binden. Die Lösung sähe dann so aus, dass du bei einem Mausklick die Koordinaten der Maus abfragst und prüfst, ob diese innerhalb des Hauses liegen.
Evtl. lohnt sich ein Blick auf die xturtle-Alternative frog. Damit kannst du zwar ein gezeichnetes Haus auch nicht zum Objekt machen, aber die Frösche (= Turtles) haben eine Methode button(text,command), mit denen sich echte Buttons im Fenster erzeugen lassen - das geht mit xturtle nicht.
Hallo
Besten Dank!!!
Hat jemand ein Beispiel, kann mir noch nicht so viel vorstellen.
Gruß
Andyh
Besten Dank!!!
Hat jemand ein Beispiel, kann mir noch nicht so viel vorstellen.
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Hallo
Allgemein wie ich das mit Turtle-Shape mache.
Ein einfachses rechet oder so auf das man klicken kann und dann wie die Methode "test1" aufgerufen.
Gruß
Andyh
Allgemein wie ich das mit Turtle-Shape mache.
Ein einfachses rechet oder so auf das man klicken kann und dann wie die Methode "test1" aufgerufen.
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Wie wär's mit Doku lesen?
Zu xturtle gibt es ein Buch "Python für Kids" - das ist eigentlich das Tutorial zum Modul.
Zu frog gibt es eine dt. Doku mit dem Modul.
Da steht zum einen drin, wie man eine Turtle- bzw. Frog-Shape definiert und auch wie man das mit dem Mausklick macht.
Zu xturtle gibt es ein Buch "Python für Kids" - das ist eigentlich das Tutorial zum Modul.
Zu frog gibt es eine dt. Doku mit dem Modul.
Da steht zum einen drin, wie man eine Turtle- bzw. Frog-Shape definiert und auch wie man das mit dem Mausklick macht.
Hallo
mal schaun ob ich das hin bekomme
Erzeugen benutzerdefinierter Turtle-Shapes
Hoffe ich habs richtig hinbekommen und es ist das was du wolltest.
Gruß...busfahrer
p.s: Python für Kids würde ich dir auch empfehlen
mal schaun ob ich das hin bekomme
Erzeugen benutzerdefinierter Turtle-Shapes
Code: Alles auswählen
begin_poly() #Start der Aufzeichnung
fd(20)
lt(90)
fd(40)
lt(90)
fd(20)
lt(90)
fd(40) #zeichnet die neue Turtle-Shape
end_poly() #Ende der Aufzeichnung
re = get_poly() # Zeichnung wird der Variablen re zugewiesen
#Registrieren der Shape unter einem Namen
screen.addshape("rechteck", re)
#Verwenden der Shape
shape("rechteck")
#onklick(fun, btn=1)
#fun:Funktion mit 2 Argumenten
#btn:1 oder 2 oder 3 für die Maustasten
def dreh(xdummy, ydummy):
left(90) #eine Funktion dreh()
onklick(dreh) #Nun sollte sich die Turtle(rechteck) jedesmal
#wenn du drauf klickst um 90 Grad
#nach links drehen.
Gruß...busfahrer
p.s: Python für Kids würde ich dir auch empfehlen

Alles wird gut ;-)
Hallo
Wunder bar, hat gut geklappt.
Man muss halt onklick durch onclick ersetzen.
Gruß
Andyh
Wunder bar, hat gut geklappt.
Man muss halt onklick durch onclick ersetzen.
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Mit dem frog-Modul statt xturtle sähe es übrigens so aus:
Das ist einer der (wenigen Fälle), wo es mit xturtle eleganter geht, weil das frog-Modul keine Möglichkeit implementiert hat, ein Event direkt an eine Frog-Instanz zu binden.
Code: Alles auswählen
from frog import *
def dreh(event):
x, y = event["pos"]
w, h = frog.size
xmin, xmax = frog.x-w/2, frog.x+w/2
ymin, ymax = frog.y-h/2, frog.y+h/2
if xmin<=x<=xmax and ymin<=y<=ymax:
frog.turn(90)
pool = Pool()
frog = Frog(pool)
frog.shape = "Rechteck", (-20,-10),(20,-10), (20,10), (-20,10)
pool.listen("<Button>",dreh)
pool.ready()
Falls es dir ursprünglich darum ging, überhaupt eine Art Button-Funktionalität zu haben, dann geht das mit dem frog-Modul einfacher:
oder auch kürzer mittels lambda-Ausdruck:
Code: Alles auswählen
from frog import *
def dreh(event):
frog.turn(90)
pool = Pool()
frog = Frog(pool)
frog.button("Klick mich!", dreh)
frog.shape = "turtle"
frog.x -= 40
pool.ready()
Code: Alles auswählen
pool = Pool()
frog = Frog(pool)
frog.button("Klick mich!", lambda e:frog.turn(90))
frog.shape = "turtle"
frog.x -= 40
pool.ready()
Hallo
@ numerix
Vielen Dank!!!
Mir stellt sich gerade die frage kann man auch mit Canvas einen Button machen?
@ numerix
Vielen Dank!!!
Mir stellt sich gerade die frage kann man auch mit Canvas einen Button machen?
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich nehme an, du meinst ein Tkinter Canvas ohne xturtle?Andyh hat geschrieben:Mir stellt sich gerade die frage kann man auch mit Canvas einen Button machen?
Antwort ist: Ja. Du kannst entweder - so wie es in xturtle intern auch funktioniert - einen Button als Zeichenobjekt erstellen und dann eine entsprechende Eventbindung herstellen, du kannst aber auch in ein Canvas einen echten Tkinter-Button mit voller Funktionalität platzieren. So funktioniert es z.B. auch im frog Modul.