Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - Shinga13/Tkinter-Easytable: Scrollable Table Module for Tkinter · GitHub
Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

!!! This project has been cancelled du to severe perfomance inadequacy !!!

Tkinter-Easytable

This python class serves as table display module for the GUI-Interface Tkinter. Tkinter itself does not contain such a module; possibly the closest module functionality-wise is the tkk.Treeview module. This on the other side is bulky and user-unfriendly not mentioning that it's purpose is not to display tables but hierachical structures such as directories. At the same time those issues are the goals this project tries to archieve: An easy to use module that provides a method of displaying tables specifically.

Features

  • horizontally and vertically scrollable, the heading is always visible
  • a variety of styling functions capable of styling individual cells, rows, columns

How-to-use

Installation

To use this module simply download the Easytable.py file and import it into your own python project. I recommend using one of the following ways:

  • paste the Easytable.py file into the same folder as your own .py file. Use
    from Easytable import Easytable or
    from Easytable import Easytable as X
    as import statement, with X being your preferred name
  • paste easytable in a subfolder together with an empty python file named __init__.py. Use
    from [SUBFOLDERNAME].Easytable import Easytable as import statement

First table

Easytable inherits from tkinter.Frame, so it supports all methods of this class, but some of those may not show any effect. To create a table use the constructor with at least two parameters: The master frame and secondly a list of headings. The table will have as many columns as there are elements in the heading list. To add content to the table use the add_content function on the created table. Pass a list to add its elements to the table. Pass multiple lists inside a list to add multiple lines.

Styling

Each table cell is represented by a tkinter Label, and those can be styled as well with built-in methods. style_configure for example styles the labels itself while border_configure configures the borders of each cell (See examples below). You can use all style attributes for the table that a standard tkinter Label supports.

Example

from tkinter import Tk, BOTH
from local.Easytable import Easytable
# list containing the headings for the table
headings = ['Name', 'Population', 'Area [sqkm]', 'Continent', 'Language', 'Currency']
# 1-Dimensional list with data for one row
data_1 = ['England', '56,489,800', '130,279', 'Europe', 'English', 'Pound Sterling']
# 2-Dimensional list with data for 5 rows
data_2 = [
['germany', '83,190,556', '357,022', 'europe', 'german', 'euro'],
['france', '67,413,000', '643,801', 'europe', 'french', 'euro'],
['mexico', '126,014,024', '1,972,550', 'north america', 'spanish', 'mexican peso'],
['Peru', '34,294,231', '1,285,216', 'south america', 'spanish', 'sol'],
['vietnam', '96,208,984', '331,699', 'asia', 'vietnamese', 'dong']
]
# the style options, may also be inserted directly as dictionaries into the function calls
style = {
'heading':{'font':('Helvetica',17,'normal'), 'fg':'#b3b3b3', 'bg':'#3a3a3a'},
'content':{'bg':'#424242', 'fg':'#eeeeee', 'font':('Helvetica',14,'bold'), 'anchor':'w', 'padx':5},
'bordercolor': '#222222',
'borderwidth':{'top_border':0, 'bottom_border':1, 'left_border':0, 'right_border':1},
'scroll':{
'trough':{'troughcolor':'#424242','troughrelief':'flat','borderwidth':0},
'arrow':{'background':'#888888', 'relief':'flat', 'borderwidth':0, 'arrowcolor':'#3a3a3a'},
'thumb':{'relief':'flat', 'background':'#888888', 'borderwidth':0}
}
}
# function running on every inserted element; optional see (*)
def caps(text):
return str(text).title()
# creating a basic window
root = Tk()
root.geometry('450x400')
root.title('Easytable Demo')
# constructing the table and filling it into the window
table = Easytable(root, columns=headings, heading_style=style['heading'], default_cell_style=style['content'], scrollbar_style=style['scroll'], border_color=style['bordercolor'])
table.pack(fill=BOTH)
# add a single row
table.add_content(data_1)
# add multiple rows
table.add_content(data_2, caps) # (*) the function caps is called for each inserted string, capitalizing the content of each cell
# configure the borders
table.border_configure('heading content', **style['borderwidth'])
table.border_configure('content column0', right_border=4)
# style examples
table.style_configure('pattern[evencolumns]', {'bg':'#303042'})
table.style_configure('cell[0,3]', {'fg':'#5555dd'})
table.style_configure('content column0', {'anchor':'e'})
# set the table height
table.table_configure(height=6)
root.protocol("WM_DELETE_WINDOW", lambda:quit())
root.mainloop()

About

Scrollable Table Module for Tkinter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages