首页 文章

在Tkinter Entry小部件中设置动画文本

提问于
浏览
0

当用户通过绑定 <FocusIn> 事件单击Entry时,我设法插入了向左移动的居中文本 . 当用户开始键入时,文本消失,当Entry小部件变空时,文本重新出现 .

使用 justify 选项完成文本从中心到左侧的移动 . 这意味着文本从中心跳到左边,这不是我想要的 . 我想找到一种动画文本的方式,以便它可以顺利地从小部件的中心滑动到小部件的左侧 .

任何帮助,将不胜感激 . 我知道这可能是使用Tkinter画布吗?

提前致谢 .

这是我的代码:

from Tkinter import *

class SearchEntry:

    def __init__(self, master):
        self.master = master

        self.entry = Entry(self.master, foreground = '#666', justify = 'center')
        self.entry.insert(0, 'Search')
        self.entry.bind('<FocusIn>', self.onfocus)
        self.entry.bind('<FocusOut>', self.outfocus)
        self.update()

    def update(self):
        if self.entry.get() == '':
            self.entry.insert(0, 'Search')
            self.entry.icursor(0)
            self.entry.bind('<Key>', self.keypress)
        self.master.after(1, self.update)

    def onfocus(self, event):
        if self.entry.get() == 'Search':
            self.entry.configure(justify = 'left')
            self.entry.icursor(0)
            self.entry.bind('<Key>', self.keypress)

    def outfocus(self, event):
        if self.entry.get() == 'Search':
            self.entry.configure(justify = 'center')

    def keypress(self, event):
        self.entry.delete(0, END)
        self.entry.unbind('<Key>')

1 回答

  • 0

    如果不诉诸某种黑客,你无能为力 . 例如,您可以在条目顶部覆盖画布并在画布中执行动画 . 在用户立即开始输入的情况下管理焦点将是棘手的(尽管可能并非不可能) .

    您还可以使用 xview 命令慢慢滚动数据,但这将涉及插入足够的空格字符以使数据可滚动 .

    Tkinter不像css,你可以做有趣的动画 . 它根本不是为那种方式而设计的 . Tkinter不是一个装满杯架和DVD播放器的舒适小型货车,它是一辆皮卡车 . 虽然,这是一辆装满了legos的皮卡车,所以如果你愿意付出很多努力,你通常可以建造你想要的东西 .

相关问题