Comment puis-je supprimer le texte existant dans Tkinter?

voix
0

Je suis en train de faire une fonction qui modifie les diapositives dans une présentation animée en utilisant si des déclarations, mais lorsque le tiroir est censé changer, le reste un widget existant. Voici mon exemple minimal reproductible (en passant, le « description.insert » est formaté correctement sur mon ordinateur, mais pas sur mon téléphone):

from tkinter import *
import random
import time
tk = Tk()
canvas = Canvas(tk, width = 400, height = 400)
tk.title('Diffusion')
canvas.pack()
 
slide = 0
 
def changeSlide():
    global slide
    slide += 1
    #WRITE TEXT
    if slide == 1:
        description = Text(tk, bd=0, height=5, width = 50)
        description.insert(INSERT, 'Diffusion is the net movement of particles from an area of higher concentration to an area of lower concentration, which results in the concentration being even. Here is an example, with the particles represented by orange dots:')
        description.place(x=0, y=190)
    elif slide == 2:
        #DRAW PARTICLES  
        particle = canvas.create_oval(10, 10, 20, 20, fill = 'orange')
 
nexT = Button(tk, text = 'NEXT', command = changeSlide)
nexT.pack()
nexT.place(bordermode = 'inside', x = 350, y = 375)
Créé 24/10/2019 à 12:00
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Bien qu'il semble que vous avez peut - être trouvé un moyen de résoudre le problème, voici une autre, peut - être mieux, approche. Il crée une distincte tk.Framepour tenir le contenu de la diapositive en cours. Cela rend relativement à effacer la diapositive par itérer si le « enfant » des objets qu'elle contient et de les détruire.

import tkinter as tk
import time
import random

root = tk.Tk()
root.title('Diffusion')

slide = tk.Frame(root, width=400, height=400)
slide.pack()
slide_cnt = 0

nexT = tk.Button(root, text='NEXT')
nexT.place(bordermode='inside', x=350, y=375)

def slide_changer():
    global slide_cnt

    # Clear slide frame.
    for child in slide.winfo_children():
        child.destroy()

    slide_cnt += 1
    if slide_cnt == 1:  # Write text.
        description = tk.Text(slide, bd=0, height=5, width=50)
        description.insert(tk.INSERT,
            'Diffusion is the net movement of particles from an area of higher '
            'concentration to an area of lower concentration, which results in '
            'the concentration being even. Here is an example, with the '
            'particles represented by orange dots:')
        description.place(x=0, y=190)

    elif slide_cnt == 2:  # Draw particles.
        canvas = tk.Canvas(slide, width=400, height=400)
        canvas.pack()
        particle = canvas.create_oval(10, 10, 20, 20, fill='orange')

nexT.config(command=slide_changer)

root.mainloop()
Créé 24/10/2019 à 13:05
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more