Напис (клас Label)
Кнопка (клас Button)
вікно (root)
Розмір / метод .geometry(100x200),
Мінімальний і максимальний розмір/ методи .minsize(300,400) root.maxsize(700,800)
Колір тла / метод .config(bg="yellow ")
Завершити програму / метод .mainloop()
Дати назву вікна / метод .title("Моє перше програмне вікно")
Пакувальники для всіх елементів вікна:
.pack()
.place(x=a,y=b)
.grid(row=a,column=b)
кнопка(button)
.bind()
Після підключення модуля tkinter*
Створюється функція з відповідною назвою def......:, у якій прописані дії, які будуть відбуватися
Прокоментуйте рядочки коду
from tkinter import*
win=Tk()
win.geometry("300x500+800+300")
win.title("Авторизація")
Login=Label(win,text="Логін",font="Arial 16", fg="blue")
Login.pack()
Наступним елементом буде Текстове поле , в якому потрібно буде вводити пароль. Клас(конструктор): змінна=Entry(параметри)
Для розташування у графічному вікні текстового поля (поля введення), додайте такий код:
Login_ent=Entry()
Login_ent.pack()
Запустіть програму і переконайтеся, що текстове поле розташоване під написом. Запишіть в ньому деякий текст, наприклад, user
Аналогічно додайте напис і текстове поле з паролем.
Pass=Label(win,text="Пароль",font="Arial 16", fg="blue")
Pass.pack()
Pass_ent=Entry()
Pass_ent.pack()
Запустіть програму. В результаті у вікні мають бути розташовані один під одним два написи та два текстові поля.
Уведіть логін user, пароль - 1111.
Як правило, у полі, де вводиться пароль, уведені символи заміняють зірочками або іншими однаковими символами. Додайте в об'єкт Pass_ent властивість show="*" Pass_ent=Entry(win,show="*")
Ще раз запустіть програму та спробуйте ввести пароль. В результаті всі символи буде замінено на зірочки.
Додайте до програмного коду обробник події натискання на Ліву кнопку миші.
def avtor(event):
x=Login_ent.get()
y=int(Pass_ent.get())
print("Пароль",Login_ent.get(),":",Pass_ent.get())
У першій команді змінній x надається значення текстового поля Login_ent за допомогою методу .get(). Причому значення змінної символьне x.
У другій команді змінній y надається значення текстового поля Pass_ent за допомогою методу .get(). Причому, оскільки значення змінної y має бути цілим числом, до команди Pass_ent.get() застосовано функцію int.
З допомогою команди виводиться повідомлення у консолі. Спочатку виводиться слова "Пароль". До нього дописується одержане із текстового поля Login_ent значення змінної x, далі дописується ":" та дописується одержане із текстового поля Pass_ent значення змінної y
З допомогою кнопки додали команду виклику ЛКМ обробника події
Btn=Button(win,text="Ок",font="Arial 16", fg="blue")
Btn.bind("<Button-1>",avtor)
Btn.pack()
Звичайно, якщо ви працюєте у графічному режимі, то використання консолі не є зручним. Змінимо код таким чином, аби текст було виведено до напису у графічному вікні.
Додамо команди створення напису без тексту
L=Label(win,font="Arial 16", fg="blue")
L.place(x="50",y="200")
У коді обробника події натискання кнопки замінить команду виведення напису наступним кодом:
L["text"]="Пароль",Login_ent.get(),":",Pass_ent.get()
Тут L - елемент керування, до якого буде виведено напис, text - властивість виведення тексту. Після знака "дорівнює" записано той же код, що був у команді print
Запустіть команду на виконання. Введіть відповідні дані. В результаті повідомлення має з'явитися у написі графічного вікна.
Login_ent.delete(0,END)
Pass_ent.delete(0,END)
Додайте до обробника події натискання ЛКМ команди вилучення тексту з кожного текстового поля.
В даних кодах на першому місці вказано імена текстових полів, далі, через крапку, - метод .delete з відповідними параметрами.
from tkinter import*
def avtor(event):
x=Login_ent.get()
y=int(Pass_ent.get())
L["text"]="Пароль",Login_ent.get(),":",Pass_ent.get()
Login_ent.delete(0,END)
Pass_ent.delete(0,END)
win=Tk()
win.geometry("300x500+800+300")
win.title("Авторизація")
Login=Label(win,text="Логін",font="Arial 16", fg="blue")
Login.pack()
Login_ent=Entry()
Login_ent.pack()
Pass=Label(win,text="Пароль",font="Arial 16", fg="blue")
Pass.pack()
Pass_ent=Entry(win,show="*")
Pass_ent.pack()
Btn=Button(win,text="Ок",font="Arial 16", fg="blue")
Btn.bind("<Button-1>",avtor)
Btn.pack()
L=Label(win,font="Arial 16", fg="blue")
L.place(x="50",y="200")
win.mainloop()