Jak mohu odstranit existující text v Tkinteru?

hlasů
0

Snažím se, aby funkci, která mění snímků v animované prezentace pomocí if, ale když je výsuvná část má změnit stávající widgetu zůstane. Tady je moje minimální reprodukovatelné příklad (mimochodem, dále jen ‚description.insert‘ je formátován správně na mém počítači, ale ne na mém telefonu):

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)
Položena 24/10/2019 v 12:00
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Ačkoli to zní, jako byste možná přišel na způsob, jak vyřešit tento problém, tady je další, možná lepší, přístup. To vytvoří samostatný tk.Framedržet obsah aktuálního snímku je. To aby ho poměrně vymazat snímek iterací ačkoli „dítě“ objektů obsahuje i zničit.

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()
Odpovězeno 24/10/2019 v 13:05
zdroj uživatelem

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