Hogyan lehet törölni a meglévő szöveget Tkinter?

szavazat
0

Próbálom, hogy egy függvény, amely megváltoztatja diák egy animált bemutatót segítségével utasításból, de amikor a csúszó kellene változtatni, a jelenlegi modul marad. Itt van a minimális reprodukálható például (mellesleg a „description.insert” helyesen van formázva a számítógépen, de nem az én telefon):

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)
A kérdést 24/10/2019 12:00
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Bár úgy hangzik, mint talán már kitalálták a módját, hogy megoldja a problémát, itt egy másik, esetleg jobb, megközelítés. Ez létrehoz egy külön tk.Frametartani az aktuális dia tartalmát. Ez teszi, hogy viszonylag egyértelmű a dia iterációjával bár a „gyermek” tárgyak tartalmaz, és elpusztítani őket.

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()
Válaszolt 24/10/2019 13:05
a forrás felhasználó

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