在TKinter中显示ASCII-art

时间:2013-05-09 12:31:51

标签: python tkinter

我正在尝试使用Tkinter开发一个离线版本的Candy盒子(仅供个人使用),并且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")

Failed Art

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

1 个答案:

答案 0 :(得分:7)

  1. 将文本左对齐(默认为中心)
  2. 行尾的反斜杠在python中有特殊含义:它包含长行。使用raw strings

  3. 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()