2

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

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

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

这就是它的显示方式(我尝试将字体更改为 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")

失败的艺术

有人可以帮我解决这个问题并解释为什么会这样吗?我假设它与字体有关,但我相信肯定有比浏览所有字体更简单的方法。

4

1 回答 1

8
  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()
于 2013-05-09T12:41:53.613 回答