微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ttk输入背景色

如何解决ttk输入背景色

经过 大量 挖掘,我已经弄清楚了。尽我所能找出来的努力,我想其他人将从中受益:

应用于ttk.Entry的标准样式根本没有采用fieldbackground选项,这将改变文本输入字段的颜色。解决方案是创建一个 确实 响应该选项的新元素。

from tkinter import *
from tkinter import ttk

root_window = Tk()

estyle = ttk.Style()
estyle.element_create("plain.field", "from", "clam")
estyle.layout("EntryStyle.TEntry",
                   [('Entry.plain.field', {'children': [(
                       'Entry.background', {'children': [(
                           'Entry.padding', {'children': [(
                               'Entry.textarea', {'sticky': 'nswe'})],
                      'sticky': 'nswe'})], 'sticky': 'nswe'})],
                      'border':'2', 'sticky': 'nswe'})])
estyle.configure("EntryStyle.TEntry",
                 background="green", 
                 foreground="grey",
                 fieldbackground="black")
entry_v = StringVar()
entry = ttk.Entry(root_window, style="EntryStyle.TEntry", textvariable=entry_v)
entry.pack(padx=10, pady=10)

不幸的是,似乎更改边框颜色的唯一方法是给其边框宽度为零,并将其嵌套在 充当 边框的框架中,或者定义一个将图像用作边框的新布局项目。

另外,请注意,背景控制的唯一内容是很小的角落空间;如果斜视一下,您会在每个角落看到一个绿色的像素。

要将图像用作边框,可以执行以下操作:

img2 = PhotoImage("entryBorder", data="""
        R0lGODlhHQAdAOMNAAAAAAQGCAgLERkfLR0mODBFZTFFZTNIajtTezxTez1XgD5XgU
        Fch////////////ywAAAAAHQAdAAAEbHCQg5i9OGt0iFRaKGLKxBgCoK5s6woGc4Cp
        a9+AwFQM7ruYn1AVHP6KRhwyaVsyW87nKioFUKXXZ5a5TXaN32FYOD5eqsAzmlX2tZ
        XqNZGxYATkgAD9wCjUqgIFMgR1I4YZCx4TCYeGCR0DEQA7""")

oestyle = ttk.Style()
oestyle.element_create("blueborder", "image", "entryBorder",
                                   border=3, sticky="nsew")
oestyle.layout("OEntryStyle.TEntry",
               [('Entry.blueborder', {'children': [(
                   'Entry.padding', {'children': [(
                     'Entry.textarea', {'sticky': 'nswe'})],
                      'sticky': 'nswe'})], 'sticky': 'nswe'})])
oestyle.configure("OEntryStyle.TEntry",
                 background="black",
                  foreground="grey")
oentry_v = StringVar()
oentry = ttk.Entry(root_window, style="OEntryStyle.TEntry", textvariable=oentry_v)
oentry.pack(padx=10, pady=10)

通过将我想要的边框图像作为gif馈入来生成字符串

import base64

with open('otherframeBorder.gif', 'rb') as f:
    encoded = base64.encodestring(f.read())
    print(encoded.decode('latin1'))

解决方法

如何从ttk更改Entry小部件的背景颜色?到目前为止,我有:

        self.estyle = ttk.Style()
        self.estyle.configure("EntryStyle.TEntry",background='black')
        self.estyle.map("EntryStyle.TEntry",foreground=[('disabled','yellow'),('active','blue')],background=[('disabled','magenta'),'green')],highlightcolor=[('focus','green'),('!focus','red')])
        self.urlentry_v = StringVar()
        self.urlentry = ttk.Entry(self.input_frame,style="EntryStyle.TEntry",textvariable=self.urlentry_v)

基本上,我已经改变了所有可以想到的内容,但是文本输入仍然顽固地变成白色。

另外,有没有办法改变边框颜色?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。