Многие начинающие программисты, которые только начали изучать программирование и до этого не имели с ним дело, скорее всего удивились, что делают программу в какой-то там "консоли" ожидая, что там сразу будет интерфейс. Однако, потратив пару часов на концентрированное изучение Пайтона, и вуаля. Вы можете писать первую интерфейсную программу.
И так, как понять, что вы можете приступать.
Вы должны знать что такое: Переменные
Списки
Функции
Циклы
Условные операторы.
И так, если вы все это знаете, вы можете приступать, я вас поздравляю. Сначала мы подключаем библиотеку 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()
Вот теперь мы запускаем нашу программу и видим вот такое красивое окошко:
Конечно, пока что тут совсем пусто, но очень скоро мы это исправим. И так, создадим верхнее меню, как в многих других приложениях
Записываем:
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("Кнопка нажата!")
И при открытии окна мы видим это:
Сверху появилось меню.
А при нажатии кнопок в консоли мы видим это:
Вот только выводить что-то в консоль - довольно бесполезно. Давайте реализуем открытие всплывающих окон. Не даром я назвал кнопки так. И так, переписываем наши функции таким образом:
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
А видим мы нечто подобное:
Само собой, вы можете написать любой заголовок и текст, однако окна следует использовать по назначение - для информации - инфо, для ошибок - эррор и т.д.
# Подробнее про МЕНЮ здесь...
Вот вроде бы мы уже много что умеем, но чего-то не хватает. Ах да! Кнопок и текста!
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() # отобразить кнопку в окне
Окей, после кучи мучений вот наш результат:
Но мне не нравится, что кнопка, как бы в 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')
Вот так куда современнее выглядит.
И последнее, чему я вас научу, это поля ввода и как с них брать информацию. Давайте по нажатию на кнопку у нас будет браться информация из поля ввода и выводится в выбранное окно. И так убираем кнопку и пишем вместо этого вот что:
Input = Entry (frame, bg = '# FFFFFF') # Поле ввода
Input.pack () # Отображение поля ввода
Вот так оно выглядит.
Теперь нам надо вместо вывода определенных сообщений должны выводить то, что укажет пользователь. Что мы для этого делаем:
+Создал еще поле для ввода заголовка, принцип тот же.
И так, вот так нужно переписать старые функции
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 минут #для начинающих