2017-07-04 5 views
1

Voici mon code:Tkinter - Comment utiliser l'option 'foreground' pour du texte dans le widget Entry?

from tkinter import * 
root = Tk() 
root.title("Punctured Convolution Encoder dan Viterbi Decoder") 
root.geometry("1350x655+0+0") 

frame_input = LabelFrame(root, text="Input") 
frame_input.place(x=20, y=10, width=400, height=200) 

# input# 
lbl_in = Label(frame_input, text="Input", font=("Arial", 16)) 
lbl_in.place(x=10, y=20) 
bin_in = Entry(frame_input, font=('Gill Sans MT', 16)) 
bin_in.place(x=130, y=20, width=240) 

def klik_proses(): 
    bin_in.selection_range(1,2) 
    bin_in.config(foreground="red") 
    bin_in.selection_range(4,5) 
    bin_in.config(foreground="red") 

btn_proses = Button(frame_input, text="test", width=12, command=klik_proses) 
btn_proses.place(x=140, y=100) 

root.mainloop() 

Le résultat est la couleur du texte entier dans un widget d'entrée a été changé, quand j'appuyé sur le bouton. Comment puis-je changer la couleur d'un texte dans le widget d'entrée?

par exemple: J'entre 123456789 dans la zone de saisie, alors je veux changer la couleur du texte pour le numéro 2 et 5. Donc, il y a 2 nombres ont la couleur rouge et les autres ont la couleur noire.

+0

Les widgets d'entrée ne prennent en charge qu'une seule couleur de premier plan. Les widgets de texte et de canevas prennent en charge plusieurs textes en couleur. –

Répondre

1

Il n'est pas possible de modifier la couleur d'une partie seulement du texte d'une entrée, mais cela est possible dans un widget Texte utilisant des balises. Je vous suggère donc de créer un widget de texte d'une ligne.

est un exemple:

import tkinter as tk 

def change_color(): 
    entry.tag_add('red', '1.1') 
    entry.tag_add('red', '1.4') 

root = tk.Tk() 

entry = tk.Text(root, height=1, width=20) 
entry.tag_configure('red', foreground='red') 
entry.bind('<Return>', lambda e: "break") # prevent newlines 
entry.insert('1.0', '123456789') 

entry.pack() 
tk.Button(root, text='Change color', command=change_color).pack() 
root.mainloop() 

Vous pouvez trouver plus d'informations sur le widget texte sur this website.