当前位置: 首页 > 面试题库 >

ttk输入背景色

狄法
2023-03-14
问题内容

如何从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'),
                                    ('active', 'green')],
                        highlightcolor=[('focus', 'green'),
                                        ('!focus', 'red')])
        self.urlentry_v = StringVar()
        self.urlentry = ttk.Entry(self.input_frame, style="EntryStyle.TEntry",
                                  textvariable=self.urlentry_v)

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

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


问题答案:

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

应用于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'))


 类似资料:
  • 本文向大家介绍使用CSS向表单输入添加背景色,包括了使用CSS向表单输入添加背景色的使用技巧和注意事项,需要的朋友参考一下 要将背景色添加到表单输入中,请使用 background-color属性。 您可以尝试运行以下代码以实现背景颜色属性以形成 示例

  • 我想知道这一点,经过一点挖掘,找到了这个资源,链接在这个答案中。 该资源指出: 背景与背景色 比较18个色板在页面上呈现100次为小矩形,一次带有背景,一次带有背景颜色。 现在,我可以想象要快得多,因为资源也认为: 我认为当浏览器看到

  • antd中的输入框的背景颜色如何修改 如图,这个背景颜色要怎么覆盖? 尝试过用内置style属性修改 另外,这个输入框的这个颜色,只有初始的时候才有,只要一输入东西就没了

  • 在多个浏览器中最兼容的最佳做法是什么: 或 还是最好同时使用这两种方法来涵盖更多内容:

  • 背景组件可以为场景设置背景色,效率要比a-sky高很多,因为并没有创建额外的模型,没有不必要的裁剪(当天空盒超出视锥体时)和遮挡处理(当天空盒遮挡3D对象时)。 例子 下面的示例将背景颜色设置为红色。 <a-scene background="color: red"></a-scene> Properties 属性 描述 默认值 color 场景背景的颜色。 black transparent 背

  • 背景 background-color background-color: <color> background-color: #f00; background-color: rgba(255, 0, 0, 0.5); background-color: transparent; /* 默认值 */ background-image background-image: <bg-image>[,

  • 背景是在3D场景中"地球背后"的区域。背景默认的颜色是0x000000。 背景的颜色可以通过 configure() API进行设置,如下所示: controller.configure({         color: {                 background:0x0000ff         } }); 也可以通过 setBackgroundColor() API来动态改变背景

  • 引言 2008年,V8 引擎随 Chrome 浏览器横空出世,JavaScript 这门通用的 Web 脚本语言的执行效率得到质的提升。 V8 引擎的出现,注定是 JavaScript 发展史上一个光辉的里程碑。它的出现,让当时研究高性能服务器开发、长时间一筹莫展的 Ryan Dahl 有了新的、合适的选择,不久,在2009年的柏林的 JSConf 大会上,基于 JavaScript 的服务端项目