2017-12-20 3 views
0

Das ist, was ich passieren möchte: Der Benutzer wählt eine Schaltfläche basierend auf welche Farbe sie möchten. Dann klicken sie auf das Wort, das sie in dieser Farbe hervorheben möchten und so weiter.
Dies ist, was passiert: Der Benutzer wählt eine Farbe und alle vorherigen Wörter werden auf die Farbe geändert, obwohl ich die Farbe, die es zuvor war.
Unten ist der Code, der hervorhebt. Die Variable Suche hat den Text inPython tkinter- Hervorhebung mehrerer Farben

def _on_click(self, event):  
       if "highlight" in tags: 
        #Unhighlights 
        ArticleTextBox.tag_remove("highlight", "insert wordstart", "insert wordend") 
        wordclicked=ArticleTextBox.get("insert wordstart", "insert wordend") 
        SearchLEN=len(Search) 
        for x in range(0,SearchLEN): 
         if Search[x]==wordclicked: 
          #global Search # Needed to modify global copy of globvar 
          Search.remove(wordclicked) 

       else: 
        #highlights 
        ArticleTextBox.tag_add("highlight", "insert wordstart", "insert wordend") 
        wordclicked=ArticleTextBox.get("insert wordstart", "insert wordend") 
        #global Search # Needed to modify global copy of globvar 
        Search.append(wordclicked) 
        #print(Search) 

Und dies ist der Code für die Auswahl der Farbe

#Colour picker 
    def sel(self): 
     selection = "You selected the option " + str(var.get()) 
     colournumber=(var.get()) 
     if colournumber==2: 
      ArticleTextBox.tag_config('highlight', background='yellow', foreground='black') 
     elif colournumber==3: 
      #print("Sorry this is not working at the moment- Please go back to name selection before you click the button") 
      ArticleTextBox.tag_config('highlight', background='blue', foreground='black') 
     else: 
      ArticleTextBox.tag_config('highlight', background='yellow', foreground='black') 

Wie immer werden Fragen dankbar empfangen und beantwortet werden. Happy Xmas

+0

statt eines Tags 'highlight' verwenden Sie verschiedene Tags mit dem Farbnamen' tag_add ('highlight_red', ...) 'und dann müssen Sie jedem Tag nur einmal - beim Start - Farbe zuweisen. – furas

Antwort

1

Wenn Sie möchten, dass jedes Wort eine eindeutige Farbe hat, müssen Sie jedem Wort ein eindeutiges Tag geben. Oder, wenn Sie eine feste Anzahl von Farben haben, müssen Sie für jede Farbe ein Tag haben (zB: 'highlight-blue', 'highlight-yellow', etc).