diff --git a/AutoCompleter.py b/AutoCompleter.py index a8a2a43..a5071ca 100755 --- a/AutoCompleter.py +++ b/AutoCompleter.py @@ -9,23 +9,33 @@ import os import requests class AutoCompleter(Entry): - def __init__(self, parent, **kwargs): + def __init__(self, parent, placeholder, **kw): + Entry.__init__(self, parent, **kw) self.parent = parent - Entry.__init__(self, parent, **kwargs) + self.placeholder = placeholder + self.placeholder_color = "grey" + self.default_fg_color = self['fg'] + + self.bind("", self.foc_in) + self.bind("", self.foc_out) + self.lb = Listbox(self.parent) self.lb_up = False self.has_selected = False self.queue = Queue.Queue() - self.var = self["textvariable"] - if self.var == '': - self.var = self["textvariable"] = StringVar() + self.var = self["textvariable"] = StringVar() self.var.trace('w', self.changed) + self.put_placeholder() self.bind("", self.keypressed) - + self.update_me() + def put_placeholder(self): + self['fg'] = self.placeholder_color + self.insert(0, self.placeholder) + def keypressed(self, event): key=event.keysym if key == 'Down': @@ -38,6 +48,15 @@ class AutoCompleter(Entry): elif key == 'Escape' and self.lb_up: self.hide_list() + def foc_in(self, *args): + if self['fg'] == self.placeholder_color or self.get() == self.placeholder: + self.delete('0', 'end') + self['fg'] = self.default_fg_color + + def foc_out(self, *args): + if not self.get(): + self.put_placeholder() + def changed(self, name, index, mode): if self.var.get().__len__() < 3 and self.lb_up or self.has_selected: self.hide_list @@ -108,7 +127,7 @@ class AutoCompleter(Entry): def query_systems(self): inp = self.var.get() - if inp.__len__() >= 3: + if inp != self.placeholder and inp.__len__() >= 3: url = "https://spansh.co.uk/api/systems?" results = requests.get(url, params={'q': inp}, @@ -138,6 +157,6 @@ class AutoCompleter(Entry): if __name__ == '__main__': root = Tk() - widget = AutoCompleter(root) + widget = AutoCompleter(root, "Test") widget.grid(row=0) root.mainloop() \ No newline at end of file