Add placholder

This commit is contained in:
CMDR-Kiel42 2019-07-17 00:03:51 +02:00
parent e91d9a8ada
commit c015c3628f

View File

@ -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("<FocusIn>", self.foc_in)
self.bind("<FocusOut>", 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("<Any-Key>", 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()