Воссоздайте прокрутку текста слева направо в tkinter - PullRequest
0 голосов
/ 10 июля 2019

Я хочу создать эффект быстрого набора текста путем упаковки этикетки в tkinter. Когда я запускаю этот код, он печатает слева направо так, как я хочу, но буквы разнесены далеко друг от друга, а вместо них вместо пробелов выводятся скобки {}.

Как я могу снять скобки и просто показать пробел? Есть ли более чистый и простой способ сделать эффект прокрутки, кроме метода списка, который я использовал?


root = Tk()
delay = 50
label_var = StringVar()
label = Label(root, textvariable=label_var, height=10)
num = 0

def scroll():
    global num
    roll_text = list(message) # Edit: deleted this line
    num = num + 1
    label_var.set(roll_text[1:num]) # Edit: changed roll_text to message
    root.after(delay, scroll)

message = ' This message should be scrolling left to right. '
scroll()
label.pack()
root.mainloop()

1 Ответ

0 голосов
/ 10 июля 2019

Скобки появляются, потому что вы конвертируете строку в список.Когда tkinter задается список, где он ожидает строку, он использует правила Tcl для преобразования списка обратно в строку.Эти правила включают использование фигурных скобок для сохранения исходных данных.

Решение простое: не передавайте список label_var.set.

Что касается выравнивания, поскольку вы не предоставляете какие-либо параметры выравнивания, tkinter попытается центрировать виджет,Простым решением для этого конкретного случая является передача side='left' команде pack.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...