2015-10-16 108 views
0

我試圖更改Tkinter.Canvas中的特定字符顏色...我在網上搜索解決方案並且沒有任何內容。更改Tkinter.Canvas中的特定字符顏色

txt1 = canvasFrame.create_text(500,100, text = "redblue", font = "Calibri, 30", fill = "#4587de") 

實際的顏色是藍色的,我要畫的「紅繩」用紅色和「藍弦」還是藍色。

有一種方法可以做到這一點?

+0

拆分文本,給不同的顏色,然後加入他們也許? – MohitC

+0

@MohitChandak如何做到這一點? – Radagast

+0

嘗試運行相同的行,txt1文本「紅色」和txt2行「藍色」,填寫所需的顏色,然後做txt3 = txt1 + txt2 – MohitC

回答

1

畫布不允許爲一個字符串對象使用多種顏色。您將需要使用兩個create_text命令,每個顏色一個。這也意味着您必須計算畫布上兩個字符串的適當間距和對齊方式,以便它看起來像一個字符串。

如果您需要爲單個字符着色,畫布並不是一個很好的解決方案。如果可以,您可能需要切換到使用文本小部件。

+0

將它製作成藍色文本對象'redblue',然後在其上放置一個紅色的text_object'紅色?我沒有嘗試過,但它似乎應該工作。當然,如果文本小部件適合OP的需求,它會更好,而這種黑客技術對於「redgreenblue」不起作用。 – saulspatz

+0

@saulspatz:是的,這將工作,但你必須計算疊加文本的確切像素位置。 –

0

可以在畫布上放置文本小部件(帶有彩色文本)。

from tkinter import * 
root = Tk() 
canvas = Canvas(root) 
canvas.pack() 
text = Text(canvas, height=1, width=20) 
text.insert('end', 'red green blue') 
text['state'] = DISABLED # read only 
canvas.create_window(100, 20, anchor='nw', window=text) 
root.mainloop() 

還有其他的答案,通過使用標籤在文本着色切片。