Tkinter 自定义小部件:在通过 .configure 插入文本变量时,是否有任何方法可以更改 ttk.Entry 的样式?

Tkinter Custom widget: Is there any way to change the style of a ttk.Entry when inserting a textvariable via .configure?

我有一个自定义 ttk.Entry 小部件。我需要在通过 .configure 方法修改 'textvariable' 时执行一个操作,但我没有得到它。

一个例子:

self.user = StringVar()
self.user.set('test')
self.my_ent = custom_Entry(self.frame)
self.my_ent.configure(textvariable=self.user)

当.configure中有'textvariable'时,我想更改widget样式

我试图在我的自定义小部件中重新创建 .configure 方法,但我无法在 .configure 中调用 .configure

def configure(self, cnf=None, **kw):
    for k, v in kw.items():
        if k == 'textvariable':
            self.delete('0', END)
            self.configure(style='custom.TEntry')
            self['show'] = ''
    return self._configure('configure', cnf, kw)

我无法在 .configure 中执行此操作:

self.configure(style='custom.TEntry')
self['show'] = ''

补充

示例代码 https://www.mediafire.com/file/ehopuk4ljyj1mpi/frm_main.py.zip/file 注意:我更新了文件

您可以通过 super()

调用基础 configure 方法

这是 super() 文档中的第一段:

Return a proxy object that delegates method calls to a parent or sibling class of type. This is useful for accessing inherited methods that have been overridden in a class.

例如:

def configure(self, **kwargs):
    super().configure(**kwargs)
    if "textvariable" in kwargs:
        self.delete(0, "end")
        super().configure(style='custom.TEntry', show='')