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='')
我有一个自定义 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='')