2017-06-08 5 views
0

Je voudrais supprimer le texte que j'ai graphiquement affiché afin que je puisse écrire le nouveau texte sans chevauchement. J'ai inclus mon code ci-dessous. Merci encore pour votre temps.Comment supprimer le texte graphique Zelle de l'écran en Python?

from graphics import* 
import random 

# Function for winning 
def youwin(): 
    txt = Text(Point(250,100), "You are a Winner!") 
    txt.setTextColor(color_rgb(0,255,200)) 
    txt.setSize(30) 
    txt.setFace('courier') 
    txt.draw(win) 

# Function for losing  
def youlose(): 

txt= Text(Point(250,100), "You are a Loser!") 
txt.setTextColor(color_rgb(0,255,0)) 
txt.setSize(30) 
txt.setFace('courier') 
txt.draw(win) 


# Sets a Window 
win = GraphWin("My Window", 800, 600) 
win.setBackground('White') 

# loops 10 Times and picks out 3 random gif's. 
# Then displays each image on the screen in a row. 

for x in range(10): 

cards = ["1.png","2.png","3.png"] 
rand_card1 = random.choice(cards)  
img1 = Image(Point(100, 250), rand_card1) 
rand_card2 = random.choice(cards) 
img2 = Image(Point(300, 250), rand_card2) 
rand_card3 = random.choice(cards) 
img3 = Image(Point(500, 250), rand_card3) 


img1.draw(win) 
img2.draw(win) 
img3.draw(win) 

# checks to see if you are a winner 

if rand_card1 == rand_card2 and rand_card2 == rand_card3: 
    youwin() 
else: 
    youlose() 


# waits for a mouse click. In the future this will be a button.  
win.getMouse()  
img1.undraw() 
img2.undraw() 
img3.undraw() 



#win.close()#  

C'est la sortie que je reçois actuellement:

Double text outputted to screen

+0

Je ne suis pas très familier avec ce que vous utilisez, mais j'imagine que vous voudrez peut-être effacer votre zone de dessin avant d'y dessiner un nouveau texte. Je chercherais une fonction d'effacement d'écran ou dessinerais un rectangle sur l'ancien texte de la même couleur que l'arrière-plan. Peut-être que quelqu'un de plus compétent que moi obtiendra ce que je dis et affichera le code exact ci-dessous ... Mais c'est ce que mon approche générale serait. –

+1

Merci, Chris, le rectangle a fonctionné !!! Je suis sûr que je ne suis pas en train de coder efficacement, mais en tant que débutant, je vais prendre ce que je peux obtenir :) Pouvez-vous transformer votre commentaire en une réponse afin que je puisse upvote? – Jason

+0

[Terminé.] (Https://stackoverflow.com/a/44479477/3775798) –

Répondre

1

Je pense que vous voudrez peut-être effacer votre zone de dessin avant d'y dessiner un nouveau texte. Une approche à ce serait de dessiner un rectangle sur votre ancien texte qui est la même couleur que l'arrière-plan.

+0

@Jason, ce n'est pas une bonne solution pour les graphiques Zelle. Considérez un texte qui compte à rebours. Chaque fois que vous changez le nombre, vous associez deux objets graphiques supplémentaires à la fenêtre, au rectangle de suppression et au nouveau texte. Au lieu de cela, vous pouvez simplement indiquer l'ancien objet texte à 'undraw()' avant d'en créer un nouveau, ou, mieux encore, dire à ce même objet texte 'setText (" new text ")' pour afficher le nouveau texte et non supprimer, ni créer, rien d'autre. – cdlane

0

Je voudrais supprimer du texte que je graphiquement je peux écrire un nouveau texte

Ne pas. Vous pouvez réutiliser l'objet texte via setText(). Un exemple simple:

import time # just for demonstration 
from graphics import * 

win = GraphWin("My Window", 800, 600) 

txt = Text(Point(250,100), "You are a Loser!") 
txt.setSize(30) 
txt.draw(win) 

time.sleep(3) 

txt.setText("You are a Winner!") 

time.sleep(3) 

Si vous voulez que le texte disparaisse pendant un certain temps, juste txt.setText('') jusqu'à ce que vous ayez à nouveau besoin.

+0

Je ne pense pas que le code ci-dessus fonctionne :(Je ne suis pas sûr de ce qu'est un graphique "Zelle". J'utilise graphics.py Merci d'avoir répondu :) – Jason

+0

Je vois maintenant "Zelle" est le créateur de graphics.py. Ok son retour sur YouTube pour plus de vidéos d'introduction :) – Jason

+0

@Jason, je viens de copier le code ci-dessus, collé dans un fichier et l'a couru. Ca fonctionne bien pour moi, qu'est-ce qui ne marche pas? S'il vous plaît fournir les messages d'erreur. – cdlane