我試圖更改Tkinter.Canvas中的特定字符顏色...我在網上搜索解決方案並且沒有任何內容。更改Tkinter.Canvas中的特定字符顏色
txt1 = canvasFrame.create_text(500,100, text = "redblue", font = "Calibri, 30", fill = "#4587de")
實際的顏色是藍色的,我要畫的「紅繩」用紅色和「藍弦」還是藍色。
有一種方法可以做到這一點?
我試圖更改Tkinter.Canvas中的特定字符顏色...我在網上搜索解決方案並且沒有任何內容。更改Tkinter.Canvas中的特定字符顏色
txt1 = canvasFrame.create_text(500,100, text = "redblue", font = "Calibri, 30", fill = "#4587de")
實際的顏色是藍色的,我要畫的「紅繩」用紅色和「藍弦」還是藍色。
有一種方法可以做到這一點?
畫布不允許爲一個字符串對象使用多種顏色。您將需要使用兩個create_text
命令,每個顏色一個。這也意味着您必須計算畫布上兩個字符串的適當間距和對齊方式,以便它看起來像一個字符串。
如果您需要爲單個字符着色,畫布並不是一個很好的解決方案。如果可以,您可能需要切換到使用文本小部件。
將它製作成藍色文本對象'redblue',然後在其上放置一個紅色的text_object'紅色?我沒有嘗試過,但它似乎應該工作。當然,如果文本小部件適合OP的需求,它會更好,而這種黑客技術對於「redgreenblue」不起作用。 – saulspatz
@saulspatz:是的,這將工作,但你必須計算疊加文本的確切像素位置。 –
可以在畫布上放置文本小部件(帶有彩色文本)。
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()
還有其他的答案,通過使用標籤在文本着色切片。
拆分文本,給不同的顏色,然後加入他們也許? – MohitC
@MohitChandak如何做到這一點? – Radagast
嘗試運行相同的行,txt1文本「紅色」和txt2行「藍色」,填寫所需的顏色,然後做txt3 = txt1 + txt2 – MohitC