Seite 1 von 2
Buttons mit xturtle erstellen?????
Verfasst: Dienstag 29. September 2009, 15:44
von LP640
hallo,
ich hoffe das dieser beitrag richtig gepostet ist
ich will eigentlich nur wissen ob man irgendwie in das fenster von xturtle Knöpfe integrieren kann?
vielen dank im vorraus
mfg
LP640
Verfasst: Mittwoch 30. September 2009, 21:50
von LP640
hey leute ich warte jetzt schon
einen GANZEN TAG auf ne
antwort
kennt sich keiner hier mit xturtle aus oder woran liegts???
Helft mir doch
BITTE
mfg
LP640
Verfasst: Mittwoch 30. September 2009, 22:09
von BlackJack
Na dann erbarme ich mich mal: Die antwort auf die Frage ist: Ja, kann man.

Verfasst: Mittwoch 30. September 2009, 22:29
von cofi
LP640 hat geschrieben:hey leute ich warte jetzt schon einen GANZEN TAG auf ne antwort
Den Tag haettest du besser mit dem Lesen der Doku verbringen sollen. Kannst du aber natuerlich immernoch nachholen.
Wenn du aber noch lauter schreist bekommst du nicht mal mehr Mitleidsposts und wirst einfach nur noch ignoriert.
Verfasst: Donnerstag 1. Oktober 2009, 05:48
von LP640
kann mir jemand vielleicht noch erklären wie das jetzt geht oder nen link schicken wenn das zu umfangreich ist?
mfg
LP640
Verfasst: Donnerstag 1. Oktober 2009, 06:11
von Dav1d
das ist für turtle: dürfte aber eig so zimelich das Gleiche sein:
http://docs.python.org/library/turtle.html
Verfasst: Donnerstag 1. Oktober 2009, 06:46
von LP640
Dav1d ich hab mir den link mal durchgelesen, jedoch bringt der mich auch net weiter
habe da nichts zu buttons mit turtle oder so gefunden
bitte weiterhin um hilfe
mfg
LP640
Verfasst: Donnerstag 1. Oktober 2009, 10:27
von yipyip
Hallo LP640,
ich habe dieses Turtle-Modul bisher weder verwendet noch eigentlich weiter beachtet. Wenn man jedoch Buttons und Co braucht, halte ich es fuer am sinnvollsten, wenn man die Turtle in Tkinter integriert.
Und siehe da, das geht tatsaechlich mit RawTurtle/RawPen.
Eine kleine Demo:
Code: Alles auswählen
import Tkinter as tk
import turtle as tu
import random as rand
class Gui(object):
def __init__(self):
self.root = tk.Tk()
self.canvas = tk.Canvas(self.root, width=600, height=400)
self.turtle = tu.RawTurtle(self.canvas)
self.turtle.speed(1000)
self.button = tk.Button(self.root, text='Do It', command=self.doit)
self.canvas.pack()
self.button.pack()
def doit(self):
self.turtle.color(rand.choice(('red', 'green', 'blue')))
self.turtle.fd(rand.randint(5, 20))
turn = (self.turtle.left, self.turtle.right)
turn[rand.choice((0, 1))](90)
def run(self):
self.root.mainloop()
####
if __name__ == '__main__':
Gui().run()
(Meine ersten und bisher einzigen Erfahrungen mit der Turtle.)
yipyip
Verfasst: Donnerstag 1. Oktober 2009, 14:06
von LP640
yipyip erstmal danke für deine antwort aber bei mir kommt da folgende fehlermeldung:
Code: Alles auswählen
line 12, in __init__
self.turtle = tu.RawTurtle(self.canvas)
AttributeError: 'module' object has no attribute 'RawTurtle'
was nun?
mfg
LP640
Verfasst: Donnerstag 1. Oktober 2009, 14:12
von yipyip
Hast Du Python 2.5? (Ich benutze hier 2.6 .)
Versuch's mal mit RawPen statt RawTurtle.
yipyip
Verfasst: Donnerstag 1. Oktober 2009, 15:13
von numerix
Sofern du nicht aus irgendwelchen Gründen auf das (x)turtle-Modul festgelegt bist, könntest du das frog-Modul einsetzen:
http://pypi.python.org/pypi/frog/1.0.0
Das funktioniert im Prinzip wie das turtle-Modul, ist aber in einigen Dingen komfortabler. Der folgende Code erzeugt einen Button; bei jedem Buttonklick dreht der "Frosch" (= Turtle) sich um sich selbst.
Code: Alles auswählen
from frog import Pool, Frog
pool = Pool()
frog = Frog(pool)
frog.jump(10)
frog.button("Dreh dich!", lambda x:frog.turn(360))
frog.home()
pool.ready()
Verfasst: Donnerstag 1. Oktober 2009, 15:45
von LP640
also leider kenn ich mich nur mit xturtle also auch turtle aus
das von yipyip hat nun auch geklappt jedoch ist es nicht dass, was ich genau suche
ich suche sowas ähnleches wie folgendes:
Code: Alles auswählen
from xturtle import*
knopf1=button("10 meter")
knopf2=button("20 meter")
if knopf1:
forward(10)
if knopf2:
forward(20)
jetzt soll keiner kommen und mir sagen dass es den befelh button() net gibt das weiss ich selber auch aber vielleicht kennt jemand sa was ähnliches
ich will also zwei knöpfe in einem bildschirm haben wenn ich den knopf1 drücke geht die turtle 10 meter (pixel) vor und beim anderen 20 pixel
weis einer wie man das machen kann??????????????????
mfg
LP640
Verfasst: Donnerstag 1. Oktober 2009, 15:52
von Dav1d
von turtle wirds dass auch nicht geben, nor vom toolkit, -> versuchs mal mit ner Einarbeitung von Tkinter
Verfasst: Donnerstag 1. Oktober 2009, 16:09
von LP640
wie schon gesagt ich kenn mich nur mit xturtle und turtle aus
von toolkit und Tkinter allgemein hab ich keine ahnung:
bin halt noch ein GREENHORN
hat echt keiner ne idee wie das hinhauen könnte???
mfg
LP640
Verfasst: Donnerstag 1. Oktober 2009, 16:42
von Dav1d
Ich habe es doch schon gesagt! und weil ich so nett bin:
http://docs.python.org/library/tkinter.html
Verfasst: Donnerstag 1. Oktober 2009, 20:02
von Pascal
Suche mal unter Tkinter das Stichwort Canvas, dann den Beitrag von yipyip noch einmal anschauen:
(leicht verändert)
Code: Alles auswählen
import Tkinter as tk
import turtle as tu
import random as rand
class Gui(object):
def __init__(self):
self.root = tk.Tk()
self.canvas = tk.Canvas(self.root, width=600, height=400)
self.turtle = tu.RawTurtle(self.canvas)
self.turtle.speed(1000)
self.button = tk.Button(self.root, text='Do It', command=self.doit)
self.canvas.pack()
self.canvas.create_window(0, -150, window=self.button)
def doit(self):
self.turtle.color(rand.choice(('red', 'green', 'blue')))
self.turtle.fd(rand.randint(5, 20))
turn = (self.turtle.left, self.turtle.right)
turn[rand.choice((0, 1))](90)
def run(self):
self.root.mainloop()
####
if __name__ == '__main__':
Gui().run()
Verfasst: Donnerstag 1. Oktober 2009, 20:48
von LP640
also ich habs jetzt so weit gebracht dass ich 2 knöpfe habe aber die sind erstens net in dem xturtle fenster und zweitens kommt da nix raus wenn ich die drücke
so sieht das etwa aus:
Code: Alles auswählen
from Tkinter import*
class Application(Frame):
def say_hi(self):
print "hi there, everyone!"
QUIT = Button()
QUIT["text"] = "QUIT"
QUIT["fg"] = "red"
QUIT["command"] = "bye"
QUIT.pack({"side": "left"})
hi_there = Button()
hi_there["text"] = "Hello",
hi_there["command"] = "hi there, everyone!"
hi_there.pack({"side": "left"})
QUIT.pack({"side": "left"})
ich bitte weiterum um hilfe
mfg
LP640
Verfasst: Donnerstag 1. Oktober 2009, 21:46
von Pascal

Wo hast du das denn her??
ganz einfach:
Code: Alles auswählen
import Tkinter as tk
def say_hi():
print 'Hi'
win = tk.Tk()
button = tk.Button(win, text='Klick mich', command=say_hi)
button.pack()
win.mainloop()
Verfasst: Donnerstag 1. Oktober 2009, 22:00
von numerix
LP640 hat geschrieben:also leider kenn ich mich nur mit xturtle also auch turtle aus
Wenn das der einzige Grund für die Wahl von (x)turtle ist ...
Wenn du mit turtle zurecht kommst, dann auch mit frog. Müsstest dir nur halt ein wenig Zeit nehmen (es gibt aber eine ausführliche deutschsprachige Doku dazu). Viel anders als turtle ist das nicht:
Code: Alles auswählen
from frog import Pool, Frog
blatt = Pool()
stift = Frog(blatt)
stift.shape = "turtle" # wenn es denn eine turtle sein muss
stift.turn(45)
stift.move(100)
stift.color = "red"
stift.circle(40)
blatt.ready()
Zumindest hast du deine Buttons dann inklusive:
Code: Alles auswählen
from frog import Pool, Frog
blatt = Pool()
stift = Frog(blatt, visible=False)
stift.button("10 px vor", lambda x:stift.move(10))
stift.pos = -200,50
stift.visible = True
stift.shape = "turtle"
blatt.ready()
Verfasst: Freitag 2. Oktober 2009, 05:40
von LP640
also erstmal danke leute für eure antworten
also ich schätze mal mir bleibt nix andres übrig als dat mit dem fröschchen zu probieren naja muss mein ganzes programm umschreiben aber egal
ich sag euch dann obs geklappt hat kann aber was dauern
nochmals vielen dank
mfg
LP640