Tkinter
Установка - оказался встроенным.
Импорт:
import tkinter
from tkinter import *
import tkinter as tk
Общая последовательность действий:
- Создать главное окно.
- Создать виджеты и выполнить конфигурацию их свойств (опций).
- Определить события, то есть то, на что будет реагировать программа.
- Описать обработчики событий, то есть то, как будет реагировать программа.
- Расположить виджеты в главном окне.
- Запустить цикл обработки событий.
Создается главное окно от класса Tk модуля tkinter.
root = Tk()
Пример окна:
from tkinter import *
root = Tk()
ent = Entry(root,width=20) #поле ввода
but = Button(root, text="Преобразовать") #кнопка
lab = Label(root, width=20, bg='black', fg='white') #метка
def str_to_sort_list(event):
s = ent.get()
lab['text'] = s
but.bind('<Button-1>', str_to_sort_list) #событие левой кнопки мыши
ent.pack() #размещение элементов при помощи менеджера геометрии
but.pack()
lab.pack()
root.mainloop() #основной цикл
Объектно-ориентированный подход
from tkinter import *
class Block:
def __init__(self, master, func):
self.ent = Entry(master, width=20)
self.but = Button(master, text="Преобразовать")
self.lab = Label(master, width=20, bg='black', fg='white')
self.but['command'] = self.str_to_sort
#self.but['command'] = getattr(self, func) #вариант с передачей имени функции
self.ent.pack()
self.but.pack()
self.lab.pack()
def str_to_sort(self):
s = self.ent.get()
self.lab['text'] = s
def str_reverse(self):
s = self.ent.get()
self.lab['text'] = s + '1'
root = Tk()
first_block = Block(root)
#first_block = Block(root, 'str_to_sort')
#second_block = Block(root, 'str_reverse')
root.mainloop()
События в этом случае определяются по-другому (через свойство).
Есть стилизация через ttk, типа удобнее, узнать.
Если потом работать с элементами не нужно, то без присвоения переменной
Label(text="Пункт выдачи").pack()
Менеджеры геометрии
Три менеджера геометрии – упаковщик (pack), сетка (grid) и размещение по координатам (place). В одном окне (или родительском виджете) нельзя комбинировать разные менеджеры.
Pack
Объекты применяются последовательно, относительно заданной точки в противоположную сторону. Сторона задается параметром side.
По умолчанию side = TOP
Виджеты
Свойство | Назначение | Пример |
text | Надпись на кнопке | b1['text'] = "Изменено" |
command | Настройка действия |
b1.config(command=change) self.but['command'] = self.str_to_sort (change - настроенная ранее функция) |
width и height | Ширина и высота. | По умолчанию ширина и высота текста |
bg , fg | Цвет фона и текста | b1['bg'] = '#000000' |
activebackground, activeforeground | Цвет фона и текста во время нажатия | |
font | Шрифт | b1["font"] = ("Comic Sans MS", 24, "bold") |
Label метка. Похожа на кнопку. Нет опции command, связь с событием с помощью bind.
Свойство | Назначение | Пример |
bd | Ширина границы вокруг метки |
Entry, text однострочное и многострочное поле ввода
Свойство / метод | Назначение | Пример |
get | Получить текст | s = ent.get() |
insert(position, text) | Вставить текст. Позиция: 0, END |
e1.insert(0, t.strftime('%H:%M:%S '))
|
delete | Удалить текст | |
justify |
Выравнивание строки CENTER - по центру |
Окно выбора файла
- askopenfilename. Открывает диалоговое окно для выбора файла и возвращает путь к выбранному файлу. Если файл не выбран, возвращается пустая строка.
- askopenfilenames. Открывает диалоговое окно для выбора файлов и возвращает список путей к выбранным файлам.
- askdirectory. Открывает диалоговое окно для выбора каталога (нельзя выбрать несколько каталогов).
- asksaveasfilename. Открывает диалоговое окно для сохранения файла, вместо открытия его.
from tkinter import filedialog
filename = filedialog.askopenfilename() # Открываем диалоговое окно для выбора файла
print(filename)