2013-05-09 2 views
2

Я пытаюсь разработать автономную версию Candy box (исключительно для личного использования), используя Tkinter, и искусство ASCII не будет отображаться правильно на Tkinter Canvas.Отображение ASCII-art в TKinter

Это способ, которым я хотел бы, чтобы отображаться:

""" 
     .---. 
     | '.| __ 
     | ___.--' ) 
    _.-'_` _%%%_/ 
    .-'%%% 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

Только намек, вы можете использовать любой моноширинный шрифт, и он будет работать. Курьер - хороший выбор, но есть и другие. –

ответ

7
  1. выравнивать текст влево (центр по умолчанию)
  2. Backslash в конце строки имеют специальное значение в Python: он заворачивает длинные строки. Используйте raw strings


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() 
+0

Эй, спасибо за ответ. Я использую python 2.7.3, а 'justify = LEFT' возвращает ошибку имени. Я знаю, что это ужасно нуб, но я не знаю, почему. Последние полчаса я искал в Интернете. – ReallyGoodPie

+0

Я предполагаю, что вы импортируете tkinter с помощью строки 'import Tkinter as Tk'. Итак, используйте 'Tk.LEFT' – kalgasnik

+0

ах, мой плохой. Я подумал об этом, но использовал 'Tk.justify': I Cheers^_ ^ – ReallyGoodPie

Смежные вопросы