HI!
Die Position eines Canvas kann man ganz einfach ändern in dem Man die Positions Zahlen ändert aber wie kann man dafür sorgen sich ein Objekt gleichmäßig bewegt.
Canvas Objekt bewegen?
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
ich weiß nicht ob du sowas in der art meinst...
Code: Alles auswählen
import Tkinter as tk
def make_oval():
global i, ov
ov=c.create_oval(5+(4*i),5+(3*i),(5*i)+60,(i)+60,fill='white', outline='white')
i+=1
ov=c.create_oval(5+(4*i),5+(3*i),(5*i)+60,(i)+60, fill='gray70')
if i != 27:
win.after(500, make_oval)
win=tk.Tk()
frame = tk.Frame(win, width=500, height=400, bd=1)
frame.pack()
iframe5 = tk.Frame(frame, bd=2, relief=RAISED)
iframe5.pack(expand=1, fill=X, pady=10, padx=5)
c = tk.Canvas(iframe5, bg='white', width=340, height=100)
c.pack()
i=0
ov=c.create_oval(5+(4*i),5+(3*i),(5*i)+60,(i)+60, fill='gray70')
make_oval()
Durchaus eine gleichmäßige bewegung, wenn auch keine geschmeidigegleichmäßig bewegt.
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Für welche Python Version ist dieser Code gedacht wenn überhaupt?
Den Ich hab Ihn in Python 2.6-3.0 getestet und es kamen nur Fehler!
Den Ich hab Ihn in Python 2.6-3.0 getestet und es kamen nur Fehler!
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
Hallo krisi12345 und Pascal !
Das Objekt nicht immer wieder neu malen, da sie bestehen bleiben und immer wieder gezeichnet werden. Über "tag="ball"" löschen und neu zeichnen.
Gruß Frank
Das Objekt nicht immer wieder neu malen, da sie bestehen bleiben und immer wieder gezeichnet werden. Über "tag="ball"" löschen und neu zeichnen.
Code: Alles auswählen
import Tkinter as tk
def make_oval(i):
c.delete("ball")
c.create_oval(5+(4*i),5+(3*i),(5*i)+60,(i)+60, fill='gray70', tag="ball")
i+=1
if i != 28:
win.after(100, make_oval, i)
win=tk.Tk()
frame = tk.Frame(win)
frame.pack(ipady=5, ipadx=10)
c = tk.Canvas(frame, bg='white', width=340, height=100)
c.pack()
make_oval(1)
win.mainloop()
Hallo !
Oder so:
Gruß Frank
Oder so:
Code: Alles auswählen
import Tkinter as tk
WIDTH = 800
HEIGHT = 500
class Ball(object):
def __init__(self, root, canvas, width, height, ball_width, color, speed,
start_x, start_y, tag):
self.width = width
self.height = height
self.canvas = canvas
self.speed = speed
self.direction_x = 2
self.direction_y = 2
self.tag = tag
self.canvas.create_oval(start_x, start_y, start_x + ball_width, start_y
+ ball_width, fill=color, tag=tag)
def run(self):
self.canvas.move(self.tag, self.direction_x, self.direction_y)
position = self.canvas.coords(self.tag)
if position[0] == 0:
self.direction_x = 2
if position[1] == 0:
self.direction_y = 2
if position[2] == self.width:
self.direction_x = -2
if position[3] == self.height:
self.direction_y = -2
self.canvas.after(self.speed, self.run)
root=tk.Tk()
canvas = tk.Canvas(root, bg='white', width=WIDTH, height=HEIGHT)
canvas.pack()
ball_1 = Ball(root, canvas, WIDTH, HEIGHT, 30, "blue", 5, 20, 300,
"ball_1")
ball_1.run()
ball_2 = Ball(root, canvas, WIDTH, HEIGHT, 20, "red", 10, 220, 10,
"ball_2")
ball_2.run()
root.mainloop()
Hallo krisi12345
http://www.python-forum.de/post-137874.html#137874
Der erste in Zeile-19:
falsch:
richtig:
Der zweite in Zeile-20:
falsch:
richtig
Gruss wuf
Da hast du recht in diesem Code-Stück gibt es zwei Fehler:krisi12345 hat geschrieben:Den Ich hab Ihn in Python 2.6-3.0 getestet und es kamen nur Fehler! Laughing
http://www.python-forum.de/post-137874.html#137874
Der erste in Zeile-19:
falsch:
Code: Alles auswählen
iframe5 = tk.Frame(frame, bd=2, relief=RAISED)
Code: Alles auswählen
iframe5 = tk.Frame(frame, bd=2, relief=tk.RAISED)
falsch:
Code: Alles auswählen
iframe5.pack(expand=1, fill=X, pady=10, padx=5)
Code: Alles auswählen
iframe5.pack(expand=1, fill=tk.X, pady=10, padx=5)
Take it easy Mates!