Πώς μπορώ να διαγράψω τις υπάρχουσες κείμενο Tkinter;

ψήφοι
0

Προσπαθώ να κάνω μια λειτουργία που αλλάζει διαφάνειες σε μια κινούμενη παρουσίαση με τη χρήση, αν δηλώσεις, αλλά όταν η διαφάνεια υποτίθεται ότι θα αλλάξει η υπάρχουσα widget παραμένει. Εδώ είναι ελάχιστη επαναλήψιμη παράδειγμά μου (από τον τρόπο, η «description.insert» έχει διαμορφωθεί σωστά στον υπολογιστή μου, αλλά όχι στο τηλέφωνό μου):

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)
Δημοσιεύθηκε 24/10/2019 στις 12:00
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Αν και ακούγεται σαν να μπορεί να υπολογίσει έναν τρόπο να λύσει το πρόβλημα, εδώ είναι ένα άλλο, ίσως την καλύτερη προσέγγιση. Θα δημιουργήσει ένα ξεχωριστό tk.Frameγια να κρατήσει τα περιεχόμενα του τρέχοντος κλείστρου. Αυτό το καθιστά σχετικά για να καθαρίσετε την πλάκα με την επανάληψη και αν το «παιδί» αντικειμένων που περιέχει και να τα καταστρέψει.

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()
Απαντήθηκε 24/10/2019 στις 13:05
πηγή χρήστη

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