在TKinter中显示ASCII-art

Rea*_*Pie 2 python tkinter

我正在尝试使用Tkinter开发一个离线版的Candy box(仅供个人使用),并且ASCII艺术将无法在Tkinter Canvas上正确显示.

这是我希望它显示的方式:

"""
        .---.
       |   '.|  __
       | ___.--'  )
     _.-'_` _%%%_/
  .-'%%% a: a %%%
      %%  L   %%_
      _%\'-' |  /-.__
   .-' / )--' #/     '\
  /'  /  /---'(    :   \
 /   |  /( /|##|  \     |
/   ||# | / | /|   \    \
|   ||##| I \/ |   |   _|
|   ||: | o  |#|   |  / |
|   ||  / I  |:/  /   |/
|   ||  | o   /  /    /
|   \|  | I  |. /    /
 \  /|##| o  |.|    /
  \/ \::|/\_ /  ---'|
  """)
Run Code Online (Sandbox Code Playgroud)

这就是它的显示方式(我试图将字体更改为IDLE(Courier,10)中使用的字体,因为它似乎显示正确,但它似乎没有帮助.

使用以下代码,它最终看起来像:

self.merchantShow = Tk.Label(self, font=self.fontused, text=
"""
        .---.
       |   '.|  __
       | ___.--'  )
     _.-'_` _%%%_/
  .-'%%% a: a %%%
      %%  L   %%_
      _%\'-' |  /-.__
   .-' / )--' #/     '\
  /'  /  /---'(    :   \
 /   |  /( /|##|  \     |
/   ||# | / | /|   \    \
|   ||##| I \/ |   |   _|
|   ||: | o  |#|   |  / |
|   ||  / I  |:/  /   |/
|   ||  | o   /  /    /
|   \|  | I  |. /    /
 \  /|##| o  |.|    /
  \/ \::|/\_ /  ---'|
  """)
            self.merchantShow.grid(row=4, column=0, stick="W")
Run Code Online (Sandbox Code Playgroud)

艺术失败

有人可以帮我解决这个问题并解释为什么会这样吗?我假设它与字体有关,但我确信必须比通过所有字体更容易.

kal*_*nik 7

  1. 将文本左对齐(中心为默认值)
  2. 行尾的反斜杠在python中有特殊含义:它包含长行.使用原始字符串


from tkinter import *

text = r"""
        .---.
       |   '.|  __
       | ___.--'  )
     _.-'_` _%%%_/
  .-'%%% a: a %%%
      %%  L   %%_
      _%\'-' |  /-.__
   .-' / )--' #/     '\
  /'  /  /---'(    :   \
 /   |  /( /|##|  \     |
/   ||# | / | /|   \    \
|   ||##| I \/ |   |   _|
|   ||: | o  |#|   |  / |
|   ||  / I  |:/  /   |/
|   ||  | o   /  /    /
|   \|  | I  |. /    /
 \  /|##| o  |.|    /
  \/ \::|/\_ /  ---'|
  """

root = Tk()
Label(root, justify=LEFT, text=text).pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)