Cum pot șterge un text existent în Tkinter?

voturi
0

Încerc să fac o funcție care își schimbă slide-uri intr-o prezentare animată folosind if, dar atunci când glisiera ar trebui să se schimbe, widget-ul existent rămâne. Aici este meu exemplu reproductibilă minimă (de drum, „description.insert“ este formatat corect pe calculatorul meu, dar nu pe telefonul meu):

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)
Întrebat 24/10/2019 la 12:00
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
2

Deși se pare că este posibil să fi descoperit o modalitate de a rezolva problema, aici e alta, eventual , mai bine, de abordare. Acesta creează un separat tk.Framepentru a mentine continutul slide -ul curent lui. Acest lucru face relativ pentru a șterge slide se face prin iterarea deși „copil“ obiectelor pe care le conține și le distruge.

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()
Publicat 24/10/2019 la 13:05
sursa de către utilizator

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