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 :roll:

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. :twisted:

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.)

:wink:
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.

:wink:
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 :shock:

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
:shock: 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 :lol:
mfg
LP640