📑 Содержание статьи

1. О библиотеке 📦

INS-tk-eco — это простая и удобная обёртка для стандартной библиотеки tkinter в Python. Она создана для того, чтобы сделать разработку графических интерфейсов (GUI) быстрой, интуитивной и понятной даже для начинающих программистов.

Вдохновением для создания библиотеки послужила простота использования языка Pascal, где создание окон и элементов интерфейса занимает всего пару строк кода. INS-tk-eco переносит эту простоту в мир Python!

Основные возможности:

Библиотека идеально подходит для создания небольших утилит, обучающих программ, прототипов и любых приложений, где нужен простой и понятный интерфейс.

Совместимость: Python 3.6+ и выше. Работает на Windows, macOS и Linux.

2. Как скачать и установить ⬇️

На данный момент у нас нет pip install, но вы можете легко установить библиотеку вручную. Просто создайте файл inseco.py в папке вашего проекта и скопируйте туда код ниже.

💡 Совет: Сохраните этот файл рядом с вашим основным скриптом, чтобы импортировать его.

# ===== inseco.py — INS-tk-eco библиотека =====
import tkinter as tk

root = None  
geo_entry = 50  

def setme(set_title='None', set_geo=1):
    global root
    root = tk.Tk()
    root.title(set_title)
    
    # Размеры
    if set_geo == 1:
        root.geometry('500x500')
    elif set_geo == 2:
        root.geometry('700x700')
    elif set_geo == 3:
        root.geometry('1000x1000')
    elif set_geo == 4:
        root.geometry('1500x1500')

def clabel(text='None', fnt_name='Arial', fnt_num=16):
    global root
    if root is None:
        print("Ошибка: сначала вызови setme()")
        return
    
    label = tk.Label(root, text=text, font=(fnt_name, fnt_num))
    label.pack()

def command_btn():
    print('Кнопка нажата!') 

def cbtn(text='Open', command=None):  
    global root
    if root is None:
        print("Ошибка: сначала вызови setme()")
        return
    
    if command is None:
        command = command_btn
    
    btn = tk.Button(root, text=text, command=command)  
    btn.pack()

def c_entry(geo=50):
    global root
    if root is None:
        print("Ошибка: сначала вызови setme()")
        return
    
    entry = tk.Entry(root, width=geo)
    entry.pack()
    return entry  

class cl_entry:
    def __init__(self, geo=50):
        global root, geo_entry
        geo_entry = geo
        self.entry = None
        self.root = root
        
    def show(self, m='*'):
        global root, geo_entry
        if root is None:
            print("Ошибка: сначала вызови setme()")
            return
        self.entry = tk.Entry(root, show=m, width=geo_entry)
        self.entry.pack()
        return self.entry
    
    def start(self, m='normal'):  
        global root, geo_entry
        if root is None:
            print("Ошибка: сначала вызови setme()")
            return
        self.entry = tk.Entry(root, state=m, width=geo_entry)
        self.entry.pack()
        return self.entry
    
    def fg(self, fg='black'):
        global root, geo_entry
        if root is None:
            print("Ошибка: сначала вызови setme()")
            return
        self.entry = tk.Entry(root, fg=fg, width=geo_entry)
        self.entry.pack()
        return self.entry
    
    def bg(self, bg='white'):
        global root, geo_entry
        if root is None:
            print("Ошибка: сначала вызови setme()")
            return
        self.entry = tk.Entry(root, bg=bg, width=geo_entry)
        self.entry.pack()
        return self.entry
    
    def get(self):  
        if self.entry:
            return self.entry.get()
        return None
    
    def set_text(self, text):
        if self.entry:
            self.entry.delete(0, tk.END)
            self.entry.insert(0, text)

def i_entry():
    print('INS-ECO-TK Entry')
    print('Простой Entry: c_entry(ширина)')
    print('Продвинутый Entry:')
    print('  entry = cl_entry(ширина)')
    print('  entry.show("*") - для пароля')
    print('  entry.start("disabled") - блокировка')
    print('  entry.fg("red") - цвет текста')
    print('  entry.bg("yellow") - цвет фона')

def ibtn():
    print('INS-ECO-TK Кнопка')
    print('Начальные параметры:')
    print('  text="Open" command=command_btn')
    print('Использование: cbtn("Моя кнопка", my_function)')

def ilabel():
    print('INS-ECO-TK Текст')
    print('Начальные параметры:')
    print('  font=Arial, 16 text=None')
    print('Использование: clabel("Мой текст")')
    print('  clabel("Текст", "Comic Sans MS", 20) - со шрифтом')

def run():
    """Запускает главный цикл программы"""
    global root
    if root is not None:
        root.mainloop()
    else:
        print("Ошибка: сначала создай окно через setme()")

3. Первая программа 🚀

Чтобы начать работать с библиотекой, создайте второй файл main.py в той же папке и вставьте код ниже. Комментарии (#...) объясняют каждую функцию.

💡 Запустите программу и вы увидите окно с надписями, кнопками и полями ввода!

# ===== main.py — пример использования INS-tk-eco =====
import inseco as eco

# Создаём окно с именем "Windows" и размером 1 (500x500)
# Все типы: 2 = 700x700, 3 = 1000x1000, 4 = 1500x1500
eco.setme('Windows', 1)

# Создаём базовый текст "Hello"
eco.clabel('Hello')

# Создаём текст со шрифтом "Comic Sans MS" размером 20
eco.clabel('Plus your password', 'Comic Sans MS', 20)

# Создаём свою функцию для кнопки
def my_command():
    print('Моя собственная команда!')

# Стандартная кнопка
eco.cbtn('Нажми меня')

# Кнопка со своей функцией
eco.cbtn('Моя кнопка', my_command)

# Создаём обычное поле ввода с размером 50
eco.c_entry(50)

# Создаём класс для PRO ввода с размером 30
ent = eco.cl_entry(30)

# Создаём поле для пароля (символы скрыты звёздочками)
ent.show('*')

# Также мы можем использовать:
# ent.fg("red")    — цвет текста
# ent.bg("yellow") — цвет фона

# Информация о функциях:
eco.i_entry()  # информация о вводе
eco.ibtn()     # информация о кнопках
eco.ilabel()   # информация о табличках

# ОБЯЗАТЕЛЬНО: запускаем главный цикл приложения
eco.run()

📌 Важно: Не забудьте вызвать eco.run() в конце — без этого окно не откроется!

4. Дополнительная информация 📖

INS-tk-eco постоянно развивается. В ближайших планах:

Если вы хотите предложить идею или сообщить об ошибке — пишите нам через форму обратной связи на сайте.

Узнать больше о Entry()