Files
django-todo/frontend/todo_tk.py
2021-04-22 10:18:17 +03:00

114 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
import sys
import tkinter as tk
from tkinter import messagebox as mb
from user import User
if 'win' in sys.platform.lower():
DEFAULT_URL = "http://localhost:8000"
else:
DEFAULT_URL = "http://0.0.0.0:8000"
BASE_W = 580
BASE_H = 400
class Application(tk.Frame):
def __init__(self,
master=None
) -> None:
"""
Функция инициаизации класса
"""
super().__init__(master)
#Иницализируем параметры окна
self.master = master
self.pack(fill=tk.BOTH, expand=1)
self.grid(row=0, column=0, sticky=tk.N + tk.S + tk.E + tk.W)
tk.Grid.rowconfigure(master, 0, weight=1)
tk.Grid.columnconfigure(master, 0, weight=1)
# Иницализируем параметры пользователя
self.user = User(url=DEFAULT_URL)
# Настраиваем размеры и включаем иницализацию
self.centerWindow()
self.initAUTH()
def centerWindow(self,
width: str = BASE_W,
heigh: str = BASE_H
) -> None:
"""
Центрирует приложение по центру экрана
:param width: ширина окна
:param heigh: высота окна
"""
sw = self.master.winfo_screenwidth()
sh = self.master.winfo_screenheight()
x = (sw - width) / 2
y = (sh - heigh) / 2
self.master.geometry('%dx%d+%d+%d' % (width, heigh, x, y))
def login_clicked(self) -> None:
"""
Функция авторизации
"""
try:
self.user.auth(self.login.get(), self.password.get())
except Exception as ex:
print(ex)
self.show_info()
def show_info(selfб,
msg: str = None
) -> None:
"""
Показывает передаваемое сообщение в messagebox
:param msg: передаваемое сообщение
"""
if msg is None:
msg = "Неправильный логин или пароль"
mb.showinfo("Информация", msg)
def initAUTH(self) -> None:
"""
Создает окно авторизации программы
"""
#Конфигурируем сетку
for rows in range(25):
tk.Grid.rowconfigure(self, rows, weight=1)
for columns in range(25):
tk.Grid.columnconfigure(self, columns, weight=1)
# Подпись и поле ввода для логина
login_label = tk.Label(self, text="Введите логин")
login_label.grid(row=9, column=12, columnspan=3, rowspan=1, sticky="nsew")
self.login = tk.Entry(self)
self.login.grid(row=10, column=12, columnspan=3, rowspan=1, sticky="nsew")
# Подпись и поле ввода для пароля
password_label = tk.Label(self, text="Введите пароль")
password_label.grid(row=11, column=12, columnspan=3, rowspan=1, sticky="nsew")
self.password = tk.Entry(self, show="*")
self.password.grid(row=12, column=12, columnspan=3, rowspan=1, sticky="nsew")
# Кнопка авториазции
btn = tk.Button(self, text="Войти", command=self.login_clicked)
btn.grid(row=14, column=12, columnspan=3, rowspan=1, sticky="nsew")
if __name__ == "__main__":
master = tk.Tk()
app = Application(master)
app.master.title("ToDo")
app.mainloop()