【问题标题】:Python Tkinter Format Number Entry with commasPython Tkinter 用逗号格式化数字条目
【发布时间】:2017-11-07 06:29:04
【问题描述】:

我想知道如何将数字转换为带有逗号的格式化“数字”格式。我在 Mac OSX 上。在入口小部件中输入和评估表达式,然后使用以下功能输出到标签小部件:

def evaluate(self, event):
    data = self.e.get()
    self.ans.configure(text = "Answer: " + str(eval(data)))

我需要结果输出为“数字”格式。例如,如果输出是“34523000”,我希望它说“34,523,000”。

【问题讨论】:

  • 你需要一个数字来执行计算,还是这个数字的格式化字符串?
  • @PRMoureu 我需要的代码是评估完成后的最后一步。所以,我需要评估输出的格式化版本。

标签: python python-3.x tkinter tkinter-entry


【解决方案1】:

使用locale 模块。

如果您使用的是 Ubuntu,您可以通过在终端上输入 locale -a 来查看您的语言环境列表。在我的机器上,我看到一个长长的列表,我可以从中选择,例如“en_US.utf8”。

完成此操作后,返回您的函数并进行以下更改:

import locale
# ...
# ...
# It is better to run this outside your function:
locale.setlocale(locale.LC_ALL, 'en_US.utf8')
# ...
# ...
def evaluate(self, event):
    entry_data = self.e.get()
    data = locale.format("%d", entry_data, grouping=True)
    # ...
    # ...

以下是您提供的示例数据的快速演示:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.utf8')
'en_US.utf8'
>>> locale.format("%d", 34523000, grouping=True)
'34,523,000'

【讨论】:

  • 我将 Mac OSX 与 Spyder 一起使用 - 这仍然适用于 Mac 吗?
  • 我在 OS X 上提供的命令 should work 。该计划还@oezeadi
  • 我尝试这样做但收到错误:“不支持的语言环境设置”。我将 locale.setlocale 行放入班级的 init 函数中。我应该把它放在函数中吗?
  • 您必须先键入命令locale -a 以查看您在机器中设置的语言环境列表,然后选择其中一个并将其写入en_US.utf8 @oezeadi
  • 修复了!我犯了一个小错误。它有效 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-05-31
  • 2020-12-18
  • 2017-12-09
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
相关资源
最近更新 更多