Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/03/2020, à 10:20

Compte supprimé

Tkinter .create_text, bug d'affichage sur la 18.04?

Bonjour,
J'ai un affichage du text can.create_text altéré (il ne se restitue que partiellement) lors du passage d'un sprite par-dessus. J'ai pu constater ce phénomène sur 3 pc qui sont sur ubuntu 18.04 Mate.
Aucun souci  en utilisant ubuntu 16.04 (MAte) et son ppa python3.6.
Voici un exemple de code pouvant mettre en valeur ce défaut d'affichage:

import tkinter as tk
 
fen = tk.Tk()
can=tk.Canvas(fen,width=1680,height=1080,background='black')
can.pack()
mots = can.create_text(int(960), int(100),
                       text="XXXsalut mon grandXXX",
                       font=("Courrier", int(100), 'bold'),
                       anchor='center', fill="red")
photo = tk.PhotoImage(file="/tmp/image.png")
bidulle = can.create_image(0,0,anchor= 'nw', image=photo)
 
while True:
    compteur = 1300
    while compteur:
        can.move(bidulle,2,0)
        fen.update()
 
        compteur -= 2
 
    compteur = 1300
    while compteur:
        can.move(bidulle,-1,0)
        fen.update()
 
        compteur -= 1

Voici à quoi ressemble l'affichage de can.create_text après le passage du sprite (le mien fait 290*290):
1583917319.png

Confirmez vous le bug?

Dernière modification par Compte supprimé (Le 11/03/2020, à 10:21)

#2 Le 11/03/2020, à 10:32

bipede

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

J'ai testé sur la 19.10 avec python 3 et je n'ai pas le soucis...


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#3 Le 11/03/2020, à 10:38

Compte supprimé

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

Merci bipede,
Donc il s'agirait d'un bug lié à la 18.04 (mate?) . Si quelqu'un peut le confirmer...

#4 Le 12/03/2020, à 10:52

Compte supprimé

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

Bonjour,
J'ai fait une recherche sur le net avec pour mots clefs bug tkinter create_text, je n'ai rien trouvé qui évoque mon bug... (je n'ai peut être pas su chercher)

Auprès de qui et comment fait-on remonter ce bug ?

#5 Le 12/03/2020, à 18:27

kholo

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

salut,
j'ai surtout cherché à comprendre le code...
pas tout pigé là...

pas de mainloop ? c'est fen.update() qui fait la boucle d'affichage ?

c'est quoi les propriétés du png
c'est un sprite qui passe devant du texte... c'est ça... ?

tu pack() le canvas et pas le reste ?

je m'y remet en ce moment donc ça m'interpelle... mais je flotte un peu là !
j'ai du 16.04 et du 18.04 sous la main donc je peux tenter des trucs dans différentes conf...

edit :
bon quand j'ai écrit, je ne voyais même pas le gif de 500 octets tellement il est petit...
donc avec un gif de 6ko ça se promène... mais au dessus du texte.. !!!
et tiens encore une question  :
=> pourquoi les int(d'un int)... mais je suppose que c'était des variables à la base !

edit 2 :
je confirme ; sur une 18.04 D => G ça paume du texte,
dans l'autre sens, ça le remet...

Dernière modification par kholo (Le 12/03/2020, à 18:51)

Hors ligne

#6 Le 12/03/2020, à 19:19

kholo

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

que de galères avec ce 18.04 ...

voici un code
qui reproduit le phénomène sous 18.04 sans utiliser de gif
ce qui est d'autant plus intéressant et troublant
... et, bien sûr, pas de soucis sous 16.04

#!/usr/bin/env python 3
# -*- coding: UTF8 -*-

# script animation_balle.py
#(C) Fabrice Sincère

from tkinter import *
import math,random

LARGEUR = 800
HAUTEUR = 320
RAYON = 10 # rayon de la balle

# position initiale au milieu
X = LARGEUR/2
Y = HAUTEUR/2

# direction initiale aléatoire
vitesse = random.uniform(1.8,2)*5
angle = random.uniform(0,2*math.pi)
DX = vitesse*math.cos(angle)
DY = vitesse*math.sin(angle)

def deplacement():
    """ Déplacement de la balle """
    global X,Y,DX,DY,RAYON,LARGEUR,HAUTEUR
    
    # rebond à droite
    if X+RAYON+DX > LARGEUR:
        X = 2*(LARGEUR-RAYON)-X
        DX = -DX
    
    # rebond à gauche
    if X-RAYON+DX < 0:
        X = 2*RAYON-X
        DX = -DX
    
    # rebond en bas
    if Y+RAYON+DY > HAUTEUR:
        Y = 2*(HAUTEUR-RAYON)-Y
        DY = -DY
        
    # rebond en haut
    if Y-RAYON+DY < 0:
        Y = 2*RAYON-Y
        DY = -DY
    
    X = X+DX
    Y = Y+DY
    
    # affichage
    Canevas.coords(Balle,X-RAYON,Y-RAYON,X+RAYON,Y+RAYON)

    # mise à jour toutes les 50 ms VITESSE
    # Mafenetre.after(50,deplacement)
    Mafenetre.after(10,deplacement)

# Création de la fenêtre principale
Mafenetre = Tk()
Mafenetre.title("Animation Balle")

# Création d'un widget Canvas
Canevas = Canvas(Mafenetre,height=HAUTEUR,width=LARGEUR,bg='white')
mots = Canevas.create_text(int(400), int(230),
                       text="XXXsalut mon grandXXX",
                       font=("Courrier", int(40), 'bold'),
                       anchor='center', fill="red")

Canevas.pack(padx=5,pady=5)

# Création d'un objet graphique
Balle = Canevas.create_oval(X-RAYON,Y-RAYON,X+RAYON,Y+RAYON,width=1,fill='green')

deplacement()
Mafenetre.mainloop()

Dernière modification par kholo (Le 12/03/2020, à 20:38)

Hors ligne

#7 Le 13/03/2020, à 09:50

Compte supprimé

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

Salut kholo,
Je pense que tu as trouvé toutes les réponses aux questions que tu as posé en #5.
En ce qui concerne les int() c'est effectivement un résidu du code originel qui comportait des variables...

edit 2 :
je confirme ; sur une 18.04 D => G ça paume du texte,
dans l'autre sens, ça le remet...

C'est exactement ce qui ce passe sur mon pc .
Tu es le 4eme pc qui reproduit le bug. Je sais que sur la 16.04 , la 19.10( merci bipede), windows10 et mac il n'y a pas de souci.
Donc manifestement il s'agit bien d'un bug lié à Ubuntu 18.04...
Par contre j'ignore si celui-ci a été répertorié(perso je ne l'ai pas trouvé) ,et s'il ne l'est  pas, comment remonter l'info...

Dernière modification par Compte supprimé (Le 13/03/2020, à 09:51)

#8 Le 16/03/2020, à 16:33

Compte supprimé

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

moi a écrit :

comment remonter l'info...

Au final, ce n'est pas si important que ça . Vu que la 19.04 n'a pas ce bug, on peut estimer que ce problème a été résolu. Vivement la 20.04.

@kholo: J'ai estimé que au vu de tes édits que tu avais les réponses aux questions que tu m'avais posé. C'est bien le cas ? En relisant le post j'ai un doute... Si besoin j'y reviens wink

Dernière modification par Compte supprimé (Le 16/03/2020, à 16:34)

#9 Le 10/05/2020, à 20:04

Compte supprimé

Re : Tkinter .create_text, bug d'affichage sur la 18.04?

Bug résolu sur la 20.04 . smile
Je viens de tester.