2017-04-25 54 views
0

我正試圖在Tkinter中使用Entry小部件開發一個搜索欄。到目前爲止,當用戶通過綁定<FocusIn>事件來點擊條目時,我已經設法插入居中文本,該文本向左移動。當用戶開始輸入時,文本消失,當Entry小部件變空時,文本再次出現。在Tkinter 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>') 

回答

0

沒有什麼,你可以不訴諸某種形式的黑客做。例如,您可以在條目頂部覆蓋一個畫布並在畫布中進行動畫。在用戶立即開始輸入的情況下管理焦點將會非常棘手(儘管可能並非不可能)。

您也可以使用xview命令來緩慢滾動數據,但這涉及到插入足夠的空格字符以使數據可滾動。

Tkinter不像css那樣可以做有趣的動畫。這根本不是爲了這樣工作而設計的。 Tkinter不是一個舒適的麪包車和dvd播放器,它是一輛皮卡車。雖然,這是一輛裝滿了勒索的皮卡車,所以如果你願意付出很大的努力,你通常可以建造你想要的東西。

+0

感謝您的快速回復。我想我會嘗試使用畫布,也許我可以解決一些問題。 – aelamrn1

相關問題