Ich habe ein Fenster und ich rendere ein Bild darauf. Bei jedem Bild ändert sich die Position. Das Problem ist also, dass es (offensichtlich) nicht vom letzten Bild verschwindet. Ich möchte das Fenster jedes Bild löschen. Ich finde nirgendwo klare Methoden für das Fensterobjekt (GraphWin). Und ich kann nicht undraw() verwenden, denn dann müsste ich es für alles auf dem Bildschirm tun.Graphics.py: Wie wird das Fenster gelöscht?
Antwort
Die erste Sache zu betrachten ist, wenn Sie Grafikobjekte einfach zwischen Rahmen bewegen, dann rufen Sie ihre move()
Methoden auf, anstatt sie zu löschen und neu zu zeichnen. Wenn Sie den Bildschirm löschen müssen, schlage ich vor:
Bevor ich auf den Tkinter-Level herabsetze, würde ich in Erwägung ziehen, die eigenen Grundlagen von Zelle Graphics zu verwenden. Der Grund dafür ist, dass die Zelle Graphics ihre eigenen parallelen Datensätze von Objekten behält und wenn Sie sie von der Tkinter-Ebene löschen, könnten Sie die beiden nicht synchronisieren. Hier ist mein Vorschlag:
Allerdings ist nicht zeichnen Elemente langsam, wahrscheinlich langsamer als die gewünschte Bildrate. Also, sollten Sie die automatische Spülung deaktivieren:
win = GraphWin(..., autoflush=False)
und dann rufen:
update()
, wenn Sie etwas zu Ihrem Benutzer zu präsentieren - das ist die Grafik beschleunigen wird, da sie gewonnen Zeige alle Zwischenschritte.
Der obige Hinweis gilt nicht gelten jedoch für Dinge, die mit der win.plot()
Methode gezogen werden. Das Plotten wird auf einer niedrigeren Ebene als bei anderen Zelle-Grafiken durchgeführt, so dass Sie zum Löschen der Darstellung auf Tkinter zurückgreifen müssen. Ein Beispiel finden Sie in How to undraw plot with Zelle graphics? .
- 1. Graphics.py Bouncing Cube
- 2. Wie wird das gesamte Array gelöscht?
- 3. Wie wird das Bild vom Eingangstyp gelöscht?
- 4. JavaScript: Wie wird das höchstwertige Bit gelöscht?
- 5. Wie wird der Termin gelöscht?
- 6. Fenster schließen, wenn das Objekt graphics.py den Rand des Fensters erreicht hat
- 7. Feld wie ObservableCollection wird gelöscht, wenn Eigenschaft gelöscht wird
- 8. Kollisionen in Zelle graphics.py
- 9. Wenn das Original-Prefab gelöscht wird, wird das gesamte Prefab gelöscht
- 10. Wie wird das Hyperlink-Fenster geschlossen?
- 11. Wie wird das Fenster periodisch ausgelöst?
- 12. JOptionPane Cancel-Taste wird nicht aus dem Fenster gelöscht?
- 13. Wann wird das Verbindungsobjekt in Java gelöscht?
- 14. Titel von UITableViewCell holen, das gelöscht wird
- 15. Simulation mit Python und graphics.py Bild
- 16. Python graphics.py. Wie bekomme ich die Rückgabe von checkMouse()?
- 17. Wie wird Tkinter Canvas gelöscht?
- 18. Vesica Piscis Form in Graphics.py
- 19. Wie wird der Edittext-Hinweiswert für das nächste Mal gelöscht?
- 20. Linienobjekt von graphics.py nicht zeichnen
- 21. Wird die Objektreferenzvariable neu zugewiesen, wird das alte Objekt gelöscht?
- 22. HTML Canvas wird kreisförmig gelöscht und wird nicht vollständig gelöscht?
- 23. Übergeordnetes Fenster aktualisieren, wenn das Popup-Fenster geschlossen wird
- 24. Wie wird das erste Geschoss entfernt, während das gesamte Listenelement gelöscht wird?
- 25. Fenster ausblenden, bis das obere Fenster angezeigt wird
- 26. Warum wird das Canvas-Fenster nicht angezeigt?
- 27. Aktionsblatt wird nicht gelöscht
- 28. UIAlertController wird nicht gelöscht
- 29. Blocking-Thread wird gelöscht
- 30. Wann wird Default.png gelöscht?
Sie müssen etwas für alles im Fenster tun. Da 'GraphWin' jedoch eine Unterklasse eines' Tkinter.canvas'-Widgets ist, bedeutet dies, dass es 'find_all()' und 'delete()' Methoden hat, da 'GraphWin' diese nicht überschreibt (aus der Quelle des Moduls)). Ersteres gibt eine Liste aller Objekt-ID-Nummern auf der Zeichenfläche zurück. Sie können dann diese Nummern in der Liste durchlaufen und die Methode 'delete()' aufrufen. – martineau