3 Commits

Author SHA1 Message Date
moscap
6869c3e6ba AUTH form were added to gui 2021-04-22 10:18:17 +03:00
moscap
d46867a03e 'nts' 2021-04-22 08:10:36 +03:00
moscap
9fd811363a Initial commit by moscap 2021-04-19 12:57:31 +03:00

View File

@@ -1,14 +1,113 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import sys
import tkinter as tk 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): class Application(tk.Frame):
def __init__(self, master=None): def __init__(self,
master=None
) -> None:
"""
Функция инициаизации класса
"""
super().__init__(master) 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__": if __name__ == "__main__":
app = Application() master = tk.Tk()
app = Application(master)
app.master.title("ToDo") app.master.title("ToDo")
app.mainloop() app.mainloop()