Self-filtering Listbox with text entry for Tkinter
Project description
**tkFilterList** is a combination of the Tkinter Listbox and Entry widgets that updates to display matching items as you type.
## Usage
tkFilterList consists of a single module, `tkfilterlist` (note the module name is lowercase), which exports a single class, `FilterList`.
A brief example program:
```python
#!/usr/bin/env python
# This assumes Python 3
from tkinter import *
from tkinter.messagebox import showinfo
from tkfilterlist import FilterList
import operator
# Source items for the FilterList
# Format: display_text, symbol, operator
source = [("Addition", "+", operator.add),
("Subtraction", "-", operator.sub),
("Multiplication", "*", operator.mul),
("Division", "/", operator.floordiv)]
# Create a root window
root = Tk()
# Create a FilterList widget
fl = FilterList(root,
source=source,
display_rule=lambda item: item[0],
filter_rule=lambda item, text:
item[0].lower().startswith(text.lower()))
fl.pack(side="top", expand=1, fill="both")
def show_result(event=None):
a, b = 42, 7
item = fl.selection()
if item:
showinfo("Result",
"{0} {1} {2} = {3}".format(a, item[1], b, item[2](a, b)),
parent=root)
# Show the result of the calculation on Return or double-click
fl.bind("<Return>", show_result)
fl.bind("<Double-Button-1>", show_result)
# Focus on the FilterList widget
fl.focus_set()
# Start Tk's event loop
root.mainloop()
```
For detailed documentation, try `python -m pydoc tkfilterlist`.
## Customization
You can customize the item display and filtering behavior by setting its `display_rule` and `filter_rule` options, respectively, to your own custom functions:
* `display_rule(item)`: Returns the display text for the specified `item`.
* `filter_rule(item, text)`: Returns `True` if the `text` argument matches the specified `item`, `False` otherwise.
This allows tkFilterList to process lists containing complex datatypes, including other lists, tuples, and even entire classes.
## Usage
tkFilterList consists of a single module, `tkfilterlist` (note the module name is lowercase), which exports a single class, `FilterList`.
A brief example program:
```python
#!/usr/bin/env python
# This assumes Python 3
from tkinter import *
from tkinter.messagebox import showinfo
from tkfilterlist import FilterList
import operator
# Source items for the FilterList
# Format: display_text, symbol, operator
source = [("Addition", "+", operator.add),
("Subtraction", "-", operator.sub),
("Multiplication", "*", operator.mul),
("Division", "/", operator.floordiv)]
# Create a root window
root = Tk()
# Create a FilterList widget
fl = FilterList(root,
source=source,
display_rule=lambda item: item[0],
filter_rule=lambda item, text:
item[0].lower().startswith(text.lower()))
fl.pack(side="top", expand=1, fill="both")
def show_result(event=None):
a, b = 42, 7
item = fl.selection()
if item:
showinfo("Result",
"{0} {1} {2} = {3}".format(a, item[1], b, item[2](a, b)),
parent=root)
# Show the result of the calculation on Return or double-click
fl.bind("<Return>", show_result)
fl.bind("<Double-Button-1>", show_result)
# Focus on the FilterList widget
fl.focus_set()
# Start Tk's event loop
root.mainloop()
```
For detailed documentation, try `python -m pydoc tkfilterlist`.
## Customization
You can customize the item display and filtering behavior by setting its `display_rule` and `filter_rule` options, respectively, to your own custom functions:
* `display_rule(item)`: Returns the display text for the specified `item`.
* `filter_rule(item, text)`: Returns `True` if the `text` argument matches the specified `item`, `False` otherwise.
This allows tkFilterList to process lists containing complex datatypes, including other lists, tuples, and even entire classes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tkFilterList-0.1.0.tar.gz
(5.9 kB
view hashes)
Built Distribution
Close
Hashes for tkFilterList-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 314377641fbd91a1fbfc98653f2c9deeca694b666e82855b123ccf185c9ef12e |
|
MD5 | ff384360b6d142a7be5644e69838f3fb |
|
BLAKE2b-256 | 9ec2e432dd120b67329dc8da37e955d51380827473aebcaed5bb8621630551bb |