Python 2.7 Listbox中的文本对齐问题

Python 2.7 Listbox中的文本对齐问题,python-2.7,tkinter,Python 2.7,Tkinter,我正在尝试使用tk制作一个小GUI脚本。在根据用户输入进行计算之后,我生成了一个简单的字符串,我想使用列表框打印它,但是它遇到了对齐问题 我同时尝试在控制台中打印输出,以检查这是否是格式错误: for loop : string = foo(x) listbox.insert(END, string) print string 问题在于控制台使用的是固定宽度字体,而列表框使用的是可变宽度字体。在可变宽度字体中,像“i”(小写字母i)和“l”(小写字母l)这样的字符比像“

我正在尝试使用tk制作一个小GUI脚本。在根据用户输入进行计算之后,我生成了一个简单的字符串,我想使用
列表框打印它,但是它遇到了对齐问题

我同时尝试在控制台中打印输出,以检查这是否是格式错误:

for loop :
    string = foo(x)
    listbox.insert(END, string)
    print string

问题在于控制台使用的是固定宽度字体,而列表框使用的是可变宽度字体。在可变宽度字体中,像“i”(小写字母i)和“l”(小写字母l)这样的字符比像“M”和“0”这样的字符占用更少的水平空间

如果希望字符像在控制台中一样在列表框中排列,则需要使用固定宽度的字体。您可以通过
font
属性配置列表框使用的字体

Tkinter提供了几种默认字体,默认的固定宽度字体名为
“TkFixedFont”
。此默认字体的垂直高度与其他小部件使用的默认可变宽度字体大致相同。选择的确切字体在不同平台上可能不同,但通常是courier的变体

例如:

import Tkinter as tk
root = tk.Tk()
listbox = tk.Listbox(root, font="TkFixedFont")
如果希望明确说明字体系列和大小,可以将其作为字符串、元组或字体对象提供。例如,选择大小为18的courier字体可以指定为
font=“courier 18”


有关字体的详细信息,请参阅和部分。

您需要在列表框中使用固定宽度的字体。我想我没有更改字体。您可以清楚地看到,它们在控制台输出中的大小都相同。如果您没有更改字体,那么您可能有一个可变宽度的字体。我很确定tkinter默认为可变宽度字体。您可以清楚地看到这两个窗口使用不同的字体(例如,查看零字符)。您能建议一个修复方法吗??好了,我没有在这个程序的整个代码中更改任何字体。见鬼,我甚至不知道怎么做。我知道评论不是为了说谢谢。但是我不能投票(回购协议如果布莱恩的答案确实解决了你的问题,你应该用绿色的复选标记将其标记为“接受”,以便其他用户在发现相同类型的问题时可以找到正确的答案;)
listbox = tk.Listbox(root, font="Courier 18")