【问题标题】:Python How to force user input to be to 2dpPython如何强制用户输入为2dp
【发布时间】:2014-09-26 22:36:11
【问题描述】:

您好,我是 Python 初学者,想知道如何让用户输入包含两位或更少小数的数字

【问题讨论】:

  • 请告诉我们您已经尝试过什么。以这种方式提供一些代码问题对于堆栈溢出无效。请阅读常见问题解答。
  • 这个问题可能是相关的。 stackoverflow.com/questions/23307209/…

标签: python python-2.7 python-3.x wxpython ipython


【解决方案1】:

wx.TextCtrl 构造函数采用 validator 参数。

您可以在此处使用wx.Validator 的任何子类来实现您想要的任何验证。

不幸的是,wxPython 文档没有解释验证器如何很好地工作,因此您必须查看专注于 C++ 的 wxValidator Overview。但是 wxPython 确实带有 IntValidator,这是一个很好的例子。

请注意,有多种不同的方法可以强制执行此操作。

例如,您可以阻止他们输入任何无效字符。如果他们尝试键入.,则如果字符串中还没有.,则它是有效的,除非您距离右边缘超过两位数;如果他们尝试输入一个数字,则它是有效的,除非您在 . 的右侧并且那里已经有两个数字;其他任何内容均无效。您将覆盖 OnChar 以提供这种强制执行。

或者您可以让他们输入任何他们想要的内容,然后在他们单击“确定”按钮时抱怨数字过多。你可以为他们截断他们的输入,不管它,或者抹去它,让他们重新开始。你已经为此覆盖了@​​987654334@。

或者你可以在他们脱离控制时抱怨。或者,您可以将其截断为两位数,并警告他们您已经这样做了,而不是抱怨。以此类推。

【讨论】:

    【解决方案2】:

    查看 wxPython 演示,我可能会为此使用 wx.lib.masked.numctrl。

    【讨论】:

      猜你喜欢
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      相关资源
      最近更新 更多