【问题标题】:Changing background color from TEXT WIDGET not possible?无法从 TEXT WIDGET 更改背景颜色?
【发布时间】:2017-09-08 09:58:39
【问题描述】:

我在一个简单的文本编辑器上练习,它带有一个名为“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( )

【问题讨论】:

  • 嗨,奥利弗,如果我的回答回答了你的问题,如果你认为它是正确的,请将其标记为正确

标签: python text tkinter colors widget


【解决方案1】:

你需要稍微改变一下结构。为了改变颜色使用: T["bg"] = col_bg and 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( )

【讨论】:

  • 我非常感谢 Olia 的提示!它现在完美运行!丹克申! m(__)m 我想我现在必须考虑不同的结构! :-)
  • @Oliver,Bitterschön!。改进总是好的。请把答案标记为正确,如果有帮助
猜你喜欢
  • 2017-05-30
  • 2013-03-14
  • 2016-10-04
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多