Начните создавать настольные приложения на Python с помощью библиотеки графического интерфейса Tkinter
Программирование

Начните создавать настольные приложения на Python с помощью библиотеки графического интерфейса Tkinter

Хотите большего от своих проектов на Python? Узнайте, как создавать настольные приложения с помощью Tkinter

Tkinter – это набор инструментов графического интерфейса пользователя (GUI), который вам стоит попробовать, если вы хотите изучить возможности Python в создании настольных приложений

Здесь мы рассмотрим основы модуля графического интерфейса пользователя Tkinter

Настройка Tkinter

Как правило, вам не нужно устанавливать tkinter отдельно, если вы установили более позднюю версию Python, начиная с Python 3. Однако библиотека может не работать со старыми версиями Python. Это распространенная проблема для пользователей Mac и Linux, поскольку эти ОС обычно поставляются со старыми версиями Python по умолчанию

Вообще, чтобы использовать модуль tkinter , убедитесь, что вы загрузили и установили последнюю совместимую версию Python на свой компьютер с официального сайта python.org

Если вы работаете на Mac, вы можете загрузить последнюю версию ActiveTcl, компилятора tkinter от ActiveState

Как использовать Tkinter

Tkinter зависит от встроенного класса TK. Он оборачивает все события внутри графического интерфейса в mainloop. Таким образом, обертка mainloop делает ваш код tkinter исполняемым

Чтобы начать работу с tkinter :

fromtkinterimportTk
Tk().mainloop()

Выполнение приведенного выше кода раскручивает пустой фрейм tkinter

Однако возможности настройки Tkinter заключаются в его встроенных виджетах

Чтобы использовать эти виджеты, вы можете импортировать их из tkinter , заменив from tkinter import Tk на:

fromtkinterimport
t = Tk()
t.mainloop()

Вы также можете настроить размер окна с помощью функции geometry , а затем задать заголовок с помощью виджета title из tkinter :

t = Tk()
t.geometry('600x600'
t.title('Tk Tutorial'
t.mainloop()

Виджет ярлыка Tkinter

Tkinter позволяет писать обычные тексты непосредственно в графическом интерфейсе с помощью виджета Label :

t = Tk()
Label(t, text ='MUO Tkinter tutorial').grid()
t.mainloop()

Метод grid() , однако, является альтернативой методу pack(). Он прикрепляет ваши виджеты к графическому интерфейсу, делая их видимыми

Вы также можете указать шрифт для текста Label :

t = Tk()
Label(t, text ='MUO Tkinter tutorial', font=(60)).grid()
t.mainloop()

Работа с виджетами кнопок в Tkinter

Кнопки – одни из самых используемых виджетов в tkinter. И вы можете добавить эти нажимаемые кнопки в свой графический интерфейс с помощью различных встроенных виджетов кнопок

Вот как добавить основную кнопку в ваш графический интерфейс с помощью виджета Button :

t = Tk()
Button(t, text ='Clickable', bg ='black', fg ='white').grid()
t.mainloop()

Ключевые слова bg и fg описывают цвет фона кнопки и цвет текста внутри нее соответственно

Вы также можете настроить размер кнопки, включив параметры height и width :

t = Tk()
Button(t, text ='Clickable', bg ='black', fg ='white', height='2', width='10').grid()
t.mainloop()

Вот вывод для этого:

А если вы хотите сделать кнопку более визуально привлекательной, вы можете включить ключевое слово relief , а затем настроить ширину ее границы:

t = Tk()
Button(t, text='Clickable', bg='blue', fg='white'
height=, width=10, relief=RAISED, borderwidth=).grid()
t.mainloop()

И это выглядит следующим образом:

Замените RAISED на FLAT , чтобы увидеть, как это выглядит

Вы можете добавить столько кнопок, сколько захотите. Но будьте осторожны, чтобы избежать дублирования содержимого

Чтобы избежать перекрытия, вы можете указать положение строки и столбца для каждой кнопки:

t = Tk()
Button(t, text=, bg='black', fg='white').grid(row=, column=
Button(t, text=, bg='black', fg='white').grid(row=, column=
Button(t, text=, bg='black', fg='white').grid(row=, column=
Button(t, text=, bg='black', fg='white').grid(row=, column=
t.mainloop()

Необязательное ключевое слово command , однако, добавляет события к виджету Button. По сути, оно закрепляет необязательную функцию, которая обрабатывает определенные события при нажатии на кнопку

Например, приведенный ниже код умножает значение каждой кнопки на 6, когда вы нажимаете на нее. И он основан на заранее определенной функции:

defbuttonpress(r)
r =*r
Label(t, text=r, font=(60)).grid(row=, column=

t = Tk()
Button(t, text =, bg ='black', fg ='white', width =10, height =
command =lambda:buttonpress()).grid(row=, column =, pady =
Button(t, text =, bg ='black', fg ='white', width =10
command =lambda:buttonpress()).grid(row =, column =, pady =
Button(t, text =, bg ='black', fg ='white', width =10
command =lambda:buttonpress()).grid(row =, column =, pady =
Button(t, text =, bg ='black', fg ='white', width =10
command =lambda:buttonpress()).grid(row =, column =, pady =
t.mainloop()

В приведенном выше коде buttonpress обрабатывает событие умножения. Затем виджет Button указывает на этот обработчик события с помощью анонимной функции lambda

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

При этом не стоит изобретать колесо для каждой кнопки, как это было в предыдущем коде. Это замедляет время выполнения, а также делает ваш код трудночитаемым и узким

Но вы можете использовать цикл for, чтобы избежать этого повторения

Вот более короткая и лучшая версия приведенного выше кода:

defbuttonpress(r)
r =*r
Label(t, text = r, font = (60)).grid(row =, column =
t = Tk()
a =  
forina:
j =lambday = i:buttonpress(y)
Button(t, text = i, bg ='black', fg ='white', width =10, height =
command=j).grid(row = i, column =, pady =
t.mainloop()

Кнопки меню и кнопки проверки

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

fromtkinterimport
t = Tk()
buttons =  'Files''Dashboard''Menu''Settings''Help'
m =
forinrange(len(buttons)):
        <strong># Get each text in the buttons array using a list index as m increases.
        # Then let the column increase by 1 through the length of the array:</strong>
Menubutton(t, text=buttons m , bg='blue', fg='white').grid(row=, column=i)
m +=
t.mainloop()

Добавить кнопки проверки в ваш графический интерфейс также довольно просто:

t = Tk()
Checkbutton(t, text ='Select option').grid()
t.mainloop()

Не стесняйтесь умножать эту кнопку проверки, используя цикл for , как мы делали ранее

Как создать выпадающее меню с помощью виджета меню Tkinter

Виджет Menu позволяет создавать кликабельные выпадающие меню в tkinter

Как было сказано ранее, tkinter предлагает множество вариантов виджетов. Некоторые из них вы будете использовать при разработке выпадающего меню

Вот некоторые из распространенных вариантов виджетов, с которыми вы столкнетесь при создании выпадающего меню:

  • add_cascade: Он отображает ярлык меню и прикрепляет его туда, куда нужно.
  • add_separator: Он разграничивает подменю и группирует их на верхнее и нижнее подменю.
  • add_command: Здесь вы даете имя своему подменю. В конце концов, оно принимает аргумент команды, в котором вы можете указать обработчик события.

Вот пример выпадающего меню, в котором используются эти три опции:

fromtkinterimport
t = Tk()
fileOptions =  'New''open''Save''Save as'
fileOptionsAfterseparator =  'Import''Export''Exit'
viewOptions =  'Transform''Edit''Create'
menuBar = Menu(t)
file = Menu(menuBar, tearoff=
forinfileOptions:
file.add_command(label=i, command=None
file.add_separator()
forinfileOptionsAfterseparator:
file.add_command(label=i, command=None
menuBar.add_cascade(label='File', menu=file).

View = Menu(menuBar, tearoff=
forinviewOptions:
View.add_command(label=i, command=None
menuBar.add_cascade(label='View', menu=View)
t.config(menu=menuBar)
t.mainloop()

Посмотрите, как это выглядит:

Меню опций Tkinter

Меню Optionmenu , в отличие от выпадающего Menu , переключает свою метку на выбранный вариант

Хотя для меню опций можно указать значение метки по умолчанию, по умолчанию оно не имеет метки

Похожие: Идеи проектов на Python, подходящие для начинающих

Вот как создать меню опций в tkinter :

t = Tk()
Omenu = StringVar() <strong>#set the variable type of the options</strong>
Omenu.set('MUO') <strong>#specify a default value for the menu icon</strong>
OptionMenu(t, Omenu,'MUO''Amazon''Tutorial').grid()
t.mainloop()

Создание многоразового настольного приложения с помощью Tkinter

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

Таким образом, вы можете создать настольный калькулятор с графическим интерфейсом, сделать мини текстовый редактор или даже создать настольное приложение с графическим интерфейсом для управления запасами. Если вы хотите расправить крылья и стать специалистом по графическому интерфейсу рабочего стола, вы даже можете изучить другие модули графического интерфейса Python

Теги

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий