Buttons mit xturtle erstellen?????

Fragen zu Tkinter.
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
BlackJack

Na dann erbarme ich mich mal: Die antwort auf die Frage ist: Ja, kann man. :twisted:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

kann mir jemand vielleicht noch erklären wie das jetzt geht oder nen link schicken wenn das zu umfangreich ist? :?

mfg
LP640
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

das ist für turtle: dürfte aber eig so zimelich das Gleiche sein: http://docs.python.org/library/turtle.html
the more they change the more they stay the same
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

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
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Hast Du Python 2.5? (Ich benutze hier 2.6 .)
Versuch's mal mit RawPen statt RawTurtle.

:wink:
yipyip
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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()
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

von turtle wirds dass auch nicht geben, nor vom toolkit, -> versuchs mal mit ner Einarbeitung von Tkinter
the more they change the more they stay the same
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Ich habe es doch schon gesagt! und weil ich so nett bin: http://docs.python.org/library/tkinter.html
the more they change the more they stay the same
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

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() 
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

: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()
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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()
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
Antworten