Ошибка в create_text: _tkinter.TclError: unknown option "-foreground"

Рейтинг: -1Ответов: 1Опубликовано: 28.04.2023

В коде

def PT():
   global BBCID, BLBCID, WBCID, CBOID, BCLID, TY

   G1 = BV.get()
   G1 = G1.lower()
   FS = FSV.get()
   print(FS)
  
   FS = FS // 1
   print(FS)
   FS = int(FS)
   print(FS)

   canvas.delete(BBCID)
   canvas.delete(BLBCID)
   canvas.delete(WBCID)
   canvas.delete(CBOID)
   canvas.delete(BCLID)
   text_window = Tk()
   text_window.title(FRN)
   text_window.geometry("2500x1000")
   canvas_text = Canvas(text_window, bg="white", width=2500, height=1000)
   canvas_text.pack(anchor=CENTER, expand=1)
   file = open("D:/Python files/" + FRN, "rt", encoding='utf-8')
   for line in file:
       print(line, end = "")
       canvas_text.create_text(30, TY, font="Arial " + str(FS), anchor=NW, foreground = G1, text=line)
       TY = TY + 30

Python выдает ошибку

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Sergei\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 
1883, in __call__
    return self.func(*args)
  File "C:\Users\Sergei\Desktop\Text-file-creator\Text file creator.py", line 165, in PT
     canvas_text.create_text(30, TY, font="Arial " + str(FS), anchor=NW, foreground = G1, 
text=line)
  File "C:\Users\Sergei\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 
2805, in create_text
    return self._create('text', args, kw)
  File "C:\Users\Sergei\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 
2771, in _create
    return self.tk.getint(self.tk.call(
_tkinter.TclError: unknown option "-foreground"

Я не знаю с чем это может быть связано. Можно ли это как-нибудь исправить.

Ответы

▲ 3Принят

Ошибка буквально говорит, что у create_text нет опции "foreground".

Чтобы указать цвет текста в Canvas, используйте параметр fill (заливка):

import tkinter as tk

root = tk.Tk()

canvas_text = tk.Canvas(root)
canvas_text.pack()

TY = 0
G1 = "orange"
line = "Some text"
FS = 48
canvas_text.create_text(30, TY, font=f"Arial {FS}", anchor=tk.NW, fill=G1, text=line)

root.mainloop()

Скриншот