无法从 TEXT WIDGET 更改背景颜色?
Changing background color from TEXT WIDGET not possible?
我练习了一个简单的文本编辑器,它带有一个简单的菜单点,称为 "Colorsheme",用于更改文本小部件的背景颜色(例如暗模式或亮模式)。
当我使用自己的脚本时(对我来说这看起来合乎逻辑),我没有得到想要的结果。背景颜色不变!
这是脚本。你能给我一些提示吗?
# -*- coding: utf-8 -*-
from tkinter import *
col_bg = "white"
col_fg = "grey"
fenster = Tk()
fenster.title("Hello Windowtitle")
fenster.geometry("500x300")
fenster.configure(background="white")
# Definition Text widget
def buildnew_textwidget(col_bg,col_fg):
T = Text(fenster, height=300, width=200, bg=col_bg, fg=col_fg, bd=0)
T.pack()
T.insert(END, "")
buildnew_textwidget(col_bg, col_fg)
# Definition Colors
def Rot():
col_bg = "red"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
def Gelb():
col_bg = "yellow"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
menu = Menu(fenster)
# Colorsheme
colorsheme = Menu(menu, tearoff=0, background='black',
foreground='#D9CB9E', activebackground='#D9CB9E',
activeforeground='#374140', activeborderwidth=4)
menu.add_cascade(label="Colorsheme", menu=colorsheme)
colorsheme.add_command(label="Rot", command=Rot)
colorsheme.add_command(label="Gelb", command=Gelb)
fenster.config(menu=menu)
mainloop( )
您需要稍微更改一下结构。为了改变颜色使用:T["bg"] = col_bg 和 T["fg"] = col_fg
另外,如果你的T(文本元素)是静态的,最好不要在事件方法中创建if
from tkinter import *
col_bg = "white"
col_fg = "grey"
fenster = Tk()
fenster.title("Hello Windowtitle")
fenster.geometry("500x300")
fenster.configure(background="white")
# Definition Text widget
def buildnew_textwidget(col_bg,col_fg):
T["bg"] = col_bg
T["fg"] = col_fg
T.insert(END, "")
T = Text(fenster, height=300, width=200, bg=col_bg, fg=col_fg, bd=0)
T.pack()
# Definition Colors
def Rot():
col_bg = "red"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
def Gelb():
col_bg = "yellow"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
menu = Menu(fenster)
# Colorsheme
colorsheme = Menu(menu, tearoff=0, background='black',
foreground='#D9CB9E', activebackground='#D9CB9E',
activeforeground='#374140', activeborderwidth=4)
menu.add_cascade(label="Colorsheme", menu=colorsheme)
colorsheme.add_command(label="Rot", command=Rot)
colorsheme.add_command(label="Gelb", command=Gelb)
fenster.config(menu=menu)
mainloop( )
我练习了一个简单的文本编辑器,它带有一个简单的菜单点,称为 "Colorsheme",用于更改文本小部件的背景颜色(例如暗模式或亮模式)。
当我使用自己的脚本时(对我来说这看起来合乎逻辑),我没有得到想要的结果。背景颜色不变!
这是脚本。你能给我一些提示吗?
# -*- coding: utf-8 -*-
from tkinter import *
col_bg = "white"
col_fg = "grey"
fenster = Tk()
fenster.title("Hello Windowtitle")
fenster.geometry("500x300")
fenster.configure(background="white")
# Definition Text widget
def buildnew_textwidget(col_bg,col_fg):
T = Text(fenster, height=300, width=200, bg=col_bg, fg=col_fg, bd=0)
T.pack()
T.insert(END, "")
buildnew_textwidget(col_bg, col_fg)
# Definition Colors
def Rot():
col_bg = "red"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
def Gelb():
col_bg = "yellow"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
menu = Menu(fenster)
# Colorsheme
colorsheme = Menu(menu, tearoff=0, background='black',
foreground='#D9CB9E', activebackground='#D9CB9E',
activeforeground='#374140', activeborderwidth=4)
menu.add_cascade(label="Colorsheme", menu=colorsheme)
colorsheme.add_command(label="Rot", command=Rot)
colorsheme.add_command(label="Gelb", command=Gelb)
fenster.config(menu=menu)
mainloop( )
您需要稍微更改一下结构。为了改变颜色使用:T["bg"] = col_bg 和 T["fg"] = col_fg
另外,如果你的T(文本元素)是静态的,最好不要在事件方法中创建if
from tkinter import *
col_bg = "white"
col_fg = "grey"
fenster = Tk()
fenster.title("Hello Windowtitle")
fenster.geometry("500x300")
fenster.configure(background="white")
# Definition Text widget
def buildnew_textwidget(col_bg,col_fg):
T["bg"] = col_bg
T["fg"] = col_fg
T.insert(END, "")
T = Text(fenster, height=300, width=200, bg=col_bg, fg=col_fg, bd=0)
T.pack()
# Definition Colors
def Rot():
col_bg = "red"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
def Gelb():
col_bg = "yellow"
col_fg = "black"
buildnew_textwidget(col_bg, col_fg)
menu = Menu(fenster)
# Colorsheme
colorsheme = Menu(menu, tearoff=0, background='black',
foreground='#D9CB9E', activebackground='#D9CB9E',
activeforeground='#374140', activeborderwidth=4)
menu.add_cascade(label="Colorsheme", menu=colorsheme)
colorsheme.add_command(label="Rot", command=Rot)
colorsheme.add_command(label="Gelb", command=Gelb)
fenster.config(menu=menu)
mainloop( )