Выравнивание текста Python Tkinter

Я использую Tkinter с Python2, чтобы создать новое окно, нажав кнопку. В этом новом окне я хочу отображать текст. Теперь у меня траблы с выравниванием, можно ли его выровнять по левому краю? Он всегда центрирован, и ни anchor=LEFT, ни sticky="NSEW" не помогают.

import tkinter as tki

btn3 = tki.Button(self.root, text="HELP", command=self.help, fg="black", bg="white", font=("Courier",22))
btn3.grid(row=1, column=2, padx=10, pady=10, sticky="NSEW" )

def help(self):
    self.text = """ Hello. 
                    You can find help here to the following subjects:
                        - getting started
                        - installation
                        - FAQ."""  
    self.top = tki.Toplevel()
    self.top.title("Help")
    self.label1 = tki.Label(self.top, text = self.text, height = 0, width=80, fg="black", bg="white", font=("Courier",18))
    self.label1.pack()

person Judith    schedule 29.06.2017    source источник
comment
Вы хотите выровнять кнопку или текстовое поле?   -  person WhatsThePoint    schedule 29.06.2017
comment
Когда вы используете anchor=LEFT, это должно дать вам ошибку что-то вроде _tkinter.TclError: bad anchor LEFT: must be n, ne, e, se, s, sw, w, nw, or center. Это означает, что вы должны внимательно читать выброшенные ошибки.   -  person Lafexlos    schedule 29.06.2017
comment
Я хочу выровнять текст. Так что это выглядит именно так, как я написал выше.   -  person Judith    schedule 29.06.2017
comment
Я также пробовал привязка = n, и это не сработало.   -  person Judith    schedule 29.06.2017
comment
да, я знаю. но он говорит, что глобальное имя «w» не определено. Так что это больше проблема с использованием aelf.label1.pack(anchor=w).   -  person Judith    schedule 29.06.2017


Ответы (1)


Когда вы используете anchor = n, вам нужно поставить anchor = "n", т.е. с n в кавычках. Из-за этого вы получаете сообщение об ошибке «Глобальное имя не определено». В качестве альтернативы используйте anchor = tki.N. Поскольку вы использовали import tkinter as tki, вы должны префиксировать переменные tkinter с tki., чтобы python знал, на что вы ссылаетесь. Тем не менее, я думаю, вы можете попробовать justify=tki.LEFT, если это не сработает.

person Gareth Funk    schedule 16.01.2018
comment
Кроме того, даже если бы LEFT было допустимым значением для аргумента anchor, вам нужно было бы записать его как tki.LEFT из-за того, как вы импортировали tkinter. Если бы вы сделали from tkinter import *, вам не пришлось бы ставить префикс. Однако это считается плохой практикой, потому что тогда имена tkinter могут конфликтовать с именами, которые вы определяете, и приводить к проблемам сокрытия имен. - person Gareth Funk; 16.01.2018