Limitaciones en Tkinter??
Publicado por redmaytals (6 intervenciones) el 13/06/2018 10:22:50
Buenas a todos!! 
Llevo unos meses con Python de modo autodidacta, visualizando algunos videos de cursos como: Píldorasinforáticas, Jesús Conde, Código Facilito....y Google. Utilizo una versión de Python: WinPython 3.4 versión portable y no tengo conocimientos en otros lenguajes, éste es el primero!!
Tengo muchas dudas (entiendo que para muchos será muy básico) pero la primera que me gustaría aclarar sería sobre las limitaciones en Tkinter.........si es que las tiene.
Tengo un código en el que se crean tres rectángulos en un Canvas de Tkinter y los muevo con el cursor a izquierda y derecha. El tema es que si el código es el siguiente va bien:
Ahora la pregunta, porqué cuando lo "programo" mediante clases se mueven los rectángulos correctamente pero a su vez se siguen visualizando en su estado inicial??? Otra pregunta relacionada con el siguiente código.....porqué si comento (#) las instancias de dos objetos dejando solamente uno operativo, entonces funciona bién??? El código:
Saludos y gracias

Llevo unos meses con Python de modo autodidacta, visualizando algunos videos de cursos como: Píldorasinforáticas, Jesús Conde, Código Facilito....y Google. Utilizo una versión de Python: WinPython 3.4 versión portable y no tengo conocimientos en otros lenguajes, éste es el primero!!
Tengo muchas dudas (entiendo que para muchos será muy básico) pero la primera que me gustaría aclarar sería sobre las limitaciones en Tkinter.........si es que las tiene.
Tengo un código en el que se crean tres rectángulos en un Canvas de Tkinter y los muevo con el cursor a izquierda y derecha. El tema es que si el código es el siguiente va bien:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from tkinter import *
import time
raiz = Tk()
canvas = Canvas(raiz,width=800,height=600,bg="black")
canvas.pack()
def izquierda(evt):
canvas.move(rectangulo1,-10,0)
canvas.move(rectangulo2,-10,0)
canvas.move(rectangulo3,-10,0)
def derecha(evt):
canvas.move(rectangulo1,10,0)
canvas.move(rectangulo2,10,0)
canvas.move(rectangulo3,10,0)
rectangulo1 = canvas.create_rectangle(380,540,500,550,fill="white")
rectangulo2 = canvas.create_rectangle(300,500,320,510,fill="white")
rectangulo3 = canvas.create_rectangle(200,400,260,410,fill="white")
canvas.bind_all("<KeyPress-Left>",izquierda)
canvas.bind_all("<KeyPress-Right>",derecha)
while 1:
time.sleep(0.02)
raiz.update()
raiz.mainloop()
Ahora la pregunta, porqué cuando lo "programo" mediante clases se mueven los rectángulos correctamente pero a su vez se siguen visualizando en su estado inicial??? Otra pregunta relacionada con el siguiente código.....porqué si comento (#) las instancias de dos objetos dejando solamente uno operativo, entonces funciona bién??? El código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from tkinter import *
import time
raiz = Tk()
canvas = Canvas(raiz,width=800,height=600,bg="black")
canvas.pack()
class Rectangulo:
def __init__(self,color):
self.color = color
self.canvas = canvas
self.rectangulo1 = canvas.create_rectangle(380,540,500,550,fill=self.color)
self.rectangulo2 = canvas.create_rectangle(300,500,320,510,fill=self.color)
self.rectangulo3 = canvas.create_rectangle(200,400,260,410,fill=self.color)
canvas.bind_all("<KeyPress-Left>",self.izquierda)
canvas.bind_all("<KeyPress-Right>",self.derecha)
def izquierda(self,evt):
canvas.move(self.rectangulo1,-10,0)
canvas.move(self.rectangulo2,-10,0)
canvas.move(self.rectangulo3,-10,0)
def derecha(self,evt):
canvas.move(self.rectangulo1,10,0)
canvas.move(self.rectangulo2,10,0)
canvas.move(self.rectangulo3,10,0)
rectangulo1 = Rectangulo("white")
rectangulo2 = Rectangulo("white")
rectangulo3 = Rectangulo("white")
while 1:
time.sleep(0.02)
raiz.update()
raiz.mainloop()
Saludos y gracias
Valora esta pregunta


0