Git Product home page Git Product logo

suggestion's Introduction

Suggestion

Suggestion is a Python library for democratizing auto-complete(suggest) in desktop applications. It's part of the Pyrustic Open Ecosystem.

Installation | Reference

Overview

Auto-complete(suggest) is a feature available in smartphone keyboards, browser search bars, and IDEs, so why not in your app too ?

Suggestion is the library you need to power your applications with auto-complete or auto-suggest feature.

This article shows the difference between auto-suggest and auto-complete.

Let's discover how to use Suggestion:

import tkinter as tk
from suggestion import Suggestion


# the dataset
DATASET = ["friend", "family", "my", "monster"]

# root
root = tk.Tk()
root.title("Suggestion demo | built with Pyrustic")

# text field (it works with tk.Entry too !)
text_field = tk.Text(root)
text_field.pack()

# Suggestion
suggestion = Suggestion(text_field, dataset=DATASET)

# lift off !
root.mainloop()

This is what it looks like when you run the code:

Figure

Figure 1

Did my ridiculous dataset make you smile ? It's not realistic, right ? I agree.

Ok, let's download a list of 370K english words from https://github.com/dwyl/english-words.

import tkinter as tk
from suggestion import Suggestion

# the dataset
DATASET = "/home/alex/words_alpha.txt"

# root
root = tk.Tk()
root.title("Suggestion demo | built with Pyrustic")

# text field (it works with tk.Entry too!)
text_field = tk.Text(root)
text_field.pack()

# Suggestion
suggestion = Suggestion(text_field, dataset=DATASET)

# lift off !
root.mainloop()

Watch how smooth it is:

Figure

Figure 2

I can type faster, duh !

Figure

Figure 3

What if I told you that so far you've only seen the default configuration/behavior of Suggestion ?

There are 3 main parts in Suggestion:

  • the dataset: by default it is a sequence of words. You can set any data type you want if you have a custom engine that knows how to use the dataset.
  • the engine: by default it is a basic algorithm which compares the words you type with the words of the dataset (provided that the dataset is a list of words). You can set your own engine and define your own type of dataset.
  • the dropdown: by default this is a simple tk.Listbox in a headless window that displays the suggested words returned by the engine. You can define your own drop down list to display rich data, with icons or whatever you want.

Maybe you have a sophisticated dataset of words with metadata like probability of occurrence, and you need to keep track of words already typed to perform complex calculations. Suggestion is the library you need to implement your project !

If you want to create your custom auto-complete(suggest) engine, these links could be helpful:

As Suggestion is part of the Pyrustic Open Ecosystem, it is compatible with the Cyberpunk Theme:

import tkinter as tk
from suggestion import Suggestion
from cyberpunk_theme import Cyberpunk


# the dataset
DATASET = "/home/alex/words_alpha.txt"

# root
root = tk.Tk()
root.title("Suggestion demo | built with Pyrustic")

# set the theme
Cyberpunk().target(root)

# text field (it works with tk.Entry too!)
text_field = tk.Text(root)
text_field.pack()

# Suggestion
suggestion = Suggestion(text_field, dataset=DATASET)

# lift off !
root.mainloop()
Figure

Figure 4

Installation

First time

Install for the first time:

$ pip install suggestion

Upgrade

To upgrade Suggestion:

$ pip install suggestion --upgrade --upgrade-strategy eager

suggestion's People

Contributors

pyrustic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

suggestion's Issues

TypeError, line 111

File "/Users/mak/Downloads/suggestion-master/test.py", line 17, in <module>
    suggestion = Suggestion(text_field, dataset=DATASET)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mak/Downloads/suggestion-master/suggestion/__init__.py", line 27, in __init__
    self._setup()
  File "/Users/mak/Downloads/suggestion-master/suggestion/__init__.py", line 111, in _setup
    self._dropdown.build(self.widget)
TypeError: Viewable.build() takes 1 positional argument but 2 were given

Please fix this error

Styling this widget (SOLUTIONS)

To customize this widget, follow these steps:

self.suggestion._dropdown._listbox.configure(STYLES)

Can you make a built-in function for customization please.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.