列表框中的文本对齐问题

时间:2016-10-23 17:59:07

标签: python-2.7 tkinter

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

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

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

IMAGE

1 个答案:

答案 0 :(得分:1)

问题是控制台使用的是固定宽度字体,但列表框使用的是可变宽度字体。在可变宽度字体中,字符如" i" (小写I)和" l" (小写字母L)占用较少的水平空间,字符如" M"和" 0"。

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

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

例如:

import Tkinter as tk
root = tk.Tk()
listbox = tk.Listbox(root, font="TkFixedFont")

如果您希望明确字体系列和大小,可以将其作为字符串,元组或字体对象提供。例如,选择大小为18的快递字体可以指定为font="Courier 18"

listbox = tk.Listbox(root, font="Courier 18")

有关字体的详细信息,请参阅TkDocs tutorial on fonts, colors and imagesWidget Styling on effbot部分。