I got two similar programs- one in Livewires and one in Tkinter. Just moving the player on a canvas. Why is that one in Tkinter so slow? What did I miss? Livewires is based on Tkinter, so it should be the same. I looked at the code of Livewires, tried something, but no success. Maybe its because of sleeping part in event handler in Tkinter, that is somehow (how?) bypassed in Livewires by magic tkinter.dooneevent(tkinter.DONT_WAIT). Neither this worked with me.

Could anyone help?
Both programs attached.

--
geon
Pavel Kosina

from Tkinter import * 
import random


def makeCanvas():
    global canvas, root
    
    root=Tk()
    canvas=Canvas(root, width=640, height=480, bg="white")
    canvas.pack()
    
def makePlayer():
    global player
    x1,y1=random.randint(0,640), random.randint(0,480)
    x2,y2=x1+10, y1+10
    player=canvas.create_oval(x1,y1,x2,y2, fill="blue")
    root.bind("<Key>", movePlayer)

def movePlayer(event):
    if event.char=="8":  # nahoru
        dx,dy= 0,-step
    elif event.char=="6":  # vpravo
        dx,dy= step, 0
    elif event.char=="2":  # dolu
        dx,dy= 0, step
    elif event.char=="4":  # vlevo
        dx,dy= -step,0
    else:
        return

    canvas.move(player, dx, dy)

# ----------- root program --------------------------------

step=1
makeCanvas()
makePlayer()

mainloop()

from livewires import *
from random import randint

def makePlayer():
    global player_body, player_x, player_y
    player_x=randint(0,63)
    player_y=randint(0,47)
    player_body=circle(10*player_x, 10*player_y,5, filled=1)

def movePlayer():
    global finito, player_body, player_x, player_y
    keys=keys_pressed()
    
    if '2' in keys:
        player_y=player_y-krok
    if '4' in keys:
        player_x=player_x-krok
    if '6' in keys:
        player_x=player_x+krok
    if '8' in keys:
        player_y=player_y+krok
    if 'q' in keys:
        finito=1
    
    move_to(player_body, player_x*10, player_y*10)


begin_graphics()
allow_moveables()
makePlayer()
finito=0
krok=0.01

while not finito:
    movePlayer()

end_graphics()

_______________________________________________
Tkinter-discuss mailing list
[email protected]
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to