在tkinter中重新创建从左到右的滚动文本

时间:2019-07-10 19:48:11

标签: python python-3.x tkinter

我想通过在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 :(得分:0)

出现括号是因为要将字符串转换为列表。当给tkinter一个需要字符串的列表时,它使用Tcl的规则将列表转换回字符串。这些规则包括使用花括号保留原始数据。

解决方案很简单:不要将列表传递给label_var.set

对于对齐方式,由于您未提供任何对齐方式选项,因此tkinter会尝试将小部件居中。针对此特定情况的一种简单解决方案是将side='left'传递给pack命令。