Найти в Дзене
Fakeminer

Интерфейс на Python за 15 минут

Многие начинающие программисты, которые только начали изучать программирование и до этого не имели с ним дело, скорее всего удивились, что делают программу в какой-то там "консоли" ожидая, что там сразу будет интерфейс. Однако, потратив пару часов на концентрированное изучение Пайтона, и вуаля. Вы можете писать первую интерфейсную программу.
И так, как понять, что вы можете приступать.

Вы должны знать что такое: Переменные
Списки
Функции
Циклы
Условные операторы.
И так, если вы все это знаете, вы можете приступать, я вас поздравляю. Сначала мы подключаем библиотеку tkinter. Пишем import tkinter в начале нашего файла. Вот и все, мы уже, можно сказать подключили все что надо для работы с интерфейсом.

Сразу же после подключения библиотеки мы пишем данный код:

root = Tk() # Создали окно

root['bg'] =  '# FFFFFF' # Уберите пробел между " # " и FFFFFF) Установили цвет фона
root.title('Name') # Задали название окна
root.wm_attributes('-alpha', 0.9) # Сделали окно красивым и чуть прозрачным.
root.geometry('250x300') # Установили размер окна
root.resizable(False, False) # Не менять размеры окна

canvas = Canvas(width=300, height=250, bg='# FFFFFF') # Параметр, который понадобится для виджетов

canvas.pack()

frame = Frame (root, bg = '# FFFFFF') # Новый цвет окна

frame.place (relwidth = 1, relheight = 1)

# Эта строчка всегда должна оказываться в самом конце
root.mainloop()

Вот теперь мы запускаем нашу программу и видим вот такое красивое окошко:

-2

Конечно, пока что тут совсем пусто, но очень скоро мы это исправим. И так, создадим верхнее меню, как в многих других приложениях

Записываем:

mainmenu = Menu(root) # Организовываем само меню

filemenu = Menu(mainmenu, tearoff=0)

root.config(menu=mainmenu)
# Это все пункты
mainmenu.add_command(label='Информация', command=none) # Пункт mainmenu.add_command(label='Ошибка', command=none) # Пункт
mainmenu.add_command(label='Предупреждение', command=none)

И еще сразу после импорта библиотек создаем функцию none и в ней пишем
print("Кнопка нажата!")

И при открытии окна мы видим это:

-3

Сверху появилось меню.

А при нажатии кнопок в консоли мы видим это:

-4

Вот только выводить что-то в консоль - довольно бесполезно. Давайте реализуем открытие всплывающих окон. Не даром я назвал кнопки так. И так, переписываем наши функции таким образом:

mainmenu.add_command(label='Информация', command=Info) # Пункт mainmenu.add_command(label='Ошибка', command=Err) # Пункт mainmenu.add_command(label='Предупреждение', command=Warn)

Теперь каждая кнопочка исполняет отдельную функцию. Создадим их прямо под функцией none.

def Info ():
mb.showinfo(title="Заголовок окна", message="Вы нажали на кнопку \"Информация\"!")

def Err ():
mb.showerror(title="Заголовок окна", message="Вы нажали на кнопку \"Ошибка\"!")

def Warn ():
mb.showwarning(title="Заголовок окна", message="Вы нажали на кнопку \"Предупреждение\"!")

И да, в начале файла под импортом библиотеки мы пишем:

from tkinter import messagebox as mb

А видим мы нечто подобное:


-5
-6
-7

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

# Подробнее про МЕНЮ здесь...

Вот вроде бы мы уже много что умеем, но чего-то не хватает. Ах да! Кнопок и текста!

title = Label(frame, text='Это текст', font='Comfortaa 20', fg=black, bg=white, pady=5) # текст

title.pack() # отобразить текст в окне

GFbut = Button(frame, text='А это кнопка', font=' Comfortaa', fg=white, bg=yellow, command=none, height=1, width=15) # кнопка

GFbut.pack() # отобразить кнопку в окне

Окей, после кучи мучений вот наш результат:

-8

Но мне не нравится, что кнопка, как бы в 3D, что придает ей устаревший вид. Вместо GFbut = Button(frame, text='А это кнопка', font=' Comfortaa', fg=white, bg=yellow, command=none, height=1, width=15) пишем GFbut = Button(frame, text='А это кнопка', font=' Comfortaa', fg=white, bg=yellow, command=none, height=1, width=15, relief='flat')

-9

Вот так куда современнее выглядит.

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

Input = Entry (frame, bg = '# FFFFFF') # Поле ввода
Input.pack () # Отображение поля ввода

-10

Вот так оно выглядит.

Теперь нам надо вместо вывода определенных сообщений должны выводить то, что укажет пользователь. Что мы для этого делаем:

+Создал еще поле для ввода заголовка, принцип тот же.

И так, вот так нужно переписать старые функции

def Info ():

Title = Title.get () # Забираем текст из нашего поля инпут внизу

Title_str = str (Title) # конвертируем этот текст в строках

Text = Input.get () # Забираем текст из нашего поля инпут внизу

Text_str = str (Text) # конвертируем этот текст в строках

mb.showinfo(title=Title_str, message=Text_str)

def Err ():

Title = Title.get () # Забираем текст из нашего поля инпут внизу

Title_str = str (Title) # конвертируем этот текст в строках

Text = Input.get () # Забираем текст из нашего поля инпут внизу

Text_str = str (Text) # конвертируем этот текст в строках

mb.showerror(title=Title_str, message=Text_str)

def Warn ():

Title = Title.get () # Забираем текст из нашего поля инпут внизу

Title_str = str (Title) # конвертируем этот текст в строках

Text = Input.get () # Забираем текст из нашего поля инпут внизу

Text_str = str (Text) # конвертируем этот текст в строках

mb.showwarning(title=Title_str, message=Text_str)

И, так как в меню кнопках у нас уже все записано как надо, по идее уже все должно работать.

Вот и отлично! Я надеюсь у вас все получилось, если вы чего-то не поняли, не расстраивайтесь, вот вам исходный код: https://fmeprogressions.github.io/source/tkinter/python-tk/
Там все с подробными комментариями написано и расписано, так что даже новичок разберется. Если возникли еще вопросы, задавайте их в комментариях. На этом все и да прибудет с вами программирование, друзья

#программирование #интерфейс #пайтон #python с нуля #tkinter за 15 минут #python за 15 минут #для начинающих

Наука
7 млн интересуются