Buttons mit xturtle erstellen?????

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

so leute ich bin mit eurer hilfe jetzt so weit gekommen:

Code: Alles auswählen

from frog import*

p=Pool() 
f=Frog(p,False) 
f.button("10 px vor", lambda x:f.move(10)) 
f.pos = -200,50

f.visible = True 
wie mach ich dass jetzt es zum beispiel eine variable "v" gibt und wenn ich den knopf drücke, diese variable den wert 1 oder ein wort erhält???

so geht es nämlich nicht:

Code: Alles auswählen

from frog import*

p=Pool() 
f=Frog(p,False) 
f.button("10 px vor", lambda x:v=1) 
f.pos = -200,50

f.visible = True 
bitte um hilfe

mfg
LP640
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ein `lambda` Statement kann nunmal keine Zuweisungen vornehmen, du musst schon eine richtige Funktion definieren und das `lamdba` damit ersetzen.
Antworten