【问题标题】:tkinter delete on focusintkinter 在焦点上删除
【发布时间】:2018-11-19 00:34:14
【问题描述】:

我一直在研究 validatecommand 模式,比如这篇文章:

Interactively validating Entry widget content in tkinter

我的问题是,触发回调的条目小部件上的操作之一是“聚焦”。

我想用它来清除条目的内容,但是,条目对象似乎没有传递给回调。

我是不是以错误的方式处理这个问题?是否有另一种方法可以为条目小部件连接 focusin 事件并且仍然能够执行验证?

当然,我可以对 entry.delete 进行硬编码,但我希望它适用于 GUI 上的任何条目小部件。

def onValidate(self, d, i, P, s, S, v, V, W):
    if self._is_number(S):
        return True
    else:
        self.bell()
        return False

def _add_widgets(self):
    vcmd = (self.register(self.onValidate), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
    self.f_entry = ttk.Entry(self.window, width=5, validate="all", textvariable=self.fahrenheit, validatecommand=vcmd).grid(row=1, column=2)

【问题讨论】:

    标签: python events tkinter


    【解决方案1】:

    验证功能应仅用于验证。如果要在小部件获得焦点时删除,则应在 <FocusIn> 事件上设置绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 2023-02-07
      • 1970-01-01
      • 2012-03-31
      • 2014-02-20
      • 2013-02-15
      • 2012-12-29
      • 1970-01-01
      相关资源
      最近更新 更多