Искусство ASCII в Tkinter не похоже на консоль - PullRequest
1 голос
/ 23 сентября 2019

У меня есть этот код Python (3.7.2):

 import tkinter as tk
 root = tk.Tk()

 art = '''

                 uu$$$$$$$$$$$uu
              uu$$$$$$$$$$$$$$$$$uu
             u$$$$$$$$$$$$$$$$$$$$$u
            u$$$$$$$$$$$$$$$$$$$$$$$u
           u$$$$$$$$$$$$$$$$$$$$$$$$$u
           u$$$$$$*   *$$$*   *$$$$$$u
           *$$$$*      u$u       $$$$*
            $$$u       u$u       u$$$
            $$$u      u$$$u      u$$$
             *$$$$uu$$$   $$$uu$$$$*
              *$$$$$$$*   *$$$$$$$*
                u$$$$$$$u$$$$$$$u
                 u$*$*$*$*$*$*$u
      uuu        $$u$ $ $ $ $u$$       uuu
      u$$$$       $$$$$u$u$u$$$       u$$$$
      $$$$$uu      *$$$$$$$$$*     uu$$$$$$
    u$$$$$$$$$$$uu    *****    uuuu$$$$$$$$$
    $$$$***$$$$$$$$$$uuu   uu$$$$$$$$$***$$$*
     ***      **$$$$$$$$$$$uu **$***
              uuuu **$$$$$$$$$$uuu
     u$$$uuu$$$$$$$$$uu **$$$$$$$$$$$uuu$$$
     $$$$$$$$$$****           **$$$$$$$$$$$*
       *$$$$$*                      **$$$$**
         $$$*                         $$$$*

'''

print(art)

label = tk.Label(text=art)
label.pack()

root.mainloop()

Он печатает череп в консоли и в Tkinter.Но в Tkinter он отформатирован неправильно.(Ошибки не выдаются)

enter image description here

Вопросы

  1. Почему Tkinter (Label) имеетдругой формат?
  2. Как я могу это исправить?

Этот единственный связанный пост, но он не помог.

1 Ответ

4 голосов
/ 23 сентября 2019

Вам нужно использовать моноширинный шрифт для правильной работы ASCII-графики.Используйте это, например:

import Tkinter
import ttk

style = ttk.Style()
style.configure('Style.TButton', font='TkFixedFont')

label = tk.Label(text=art, style='Style.TButton')
...