Рубрики
Без рубрики

Учебник Tkinter – Часть 3

Введение в первую и вторую часть учебника TKINTER, мы обсудили, как создать простой графический интерфейс с базовыми графическими блоками строительных графических интерфейсов модуля Tkinter.

Автор оригинала: Pankaj Kumar.

Вступление

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

Добавление виджета Textbox и настроить его

Мы видели, как добавлять основные виджеты в наше окно. Давайте теперь попробуем настроить наш графический интерфейс на основе ввода пользователя. Наиболее распространенный способ получить вход от пользователя TextBox. Модуль `Tkinter` поддерживает класс с именем` ввод`, чтобы создать текстовое поле. Рассмотрим пример ниже:

import tkinter
root_window = tkinter.Tk()
root_window.geometry('300x200')
root_window.title("Tkinter tutorial")
def clicked():
    res = "Hi " + txt_box.get()
    label_widget.configure(text=res)
label_widget = tkinter.Label(root_window, text="Hi", font=("Arial Italic", 10))
label_widget.grid(column=0, row=0)
txt_box = tkinter.Entry(root_window,width=10)
txt_box.grid(column=1, row=0)
fn_btn = tkinter.Button(root_window, text="Click", bg="grey", fg="black", font=("Arial Bold", 10), command=clicked)
fn_btn.grid(column=2, row=0)
root_window.mainloop()

В приведенном выше примере мы создали текстовое поле вместе с несколькими другими виджетами. Вывод выглядит следующим образом:

Выход:

Если вы введете текст в текстовом поле, и щелкните кнопку «Нажмите», программа отобразится строка «HI», объединенная вместе с текстом в качестве ввода.

Выход:

Создание виджета раскрывающегося коробки

Там могут возникнуть ситуации, когда нам нужно получить вход от пользователя, сделав пользователя выбрать из списка параметров, отображаемых в коробке выпадающего/комбо. Библиотека TTK предоставляет класс с именем `combobox` для создания виджета коробки раскрывающегося/комбо. Итак, нам нужно импортировать библиотеку TTK для использования этой функции. Давайте создадим виджет выпадающего образец, чтобы получить пол от пользователя.

import tkinter
from tkinter .ttk import *
root_window = tkinter.Tk()
root_window.geometry('300x200')
root_window.title("Tkinter tutorial")
label_widget = tkinter.Label(root_window, text="Gender", font=("Arial Italic", 10))
label_widget.grid(column=0, row=0)
combo = Combobox(root_window)
combo['values']= ("Male", "Female")
combo.grid(column=1, row=0)
root_window.mainloop()

Этот код создает виджет Combo Box, как показано ниже.

Выход:

Добавить виджет CheckButton

Библиотека TTK поддерживает класс с именем `CheckButton` для создания виджета флажков. Давайте рассмотрим пример ниже:

from tkinter import *
from tkinter.ttk import *
main_window = Tk()
main_window.geometry('300x200')
chk_state = BooleanVar()
chk_state.set(True)
chk = Checkbutton(main_window, text='I agree to the terms and conditions of this site', var=chk_state)
chk.grid(column=0, row=0)
main_window.mainloop()

Как видите, мы использовали класс CheckButton для создания кнопки проверки. Мы можем установить состояние флажка, передавая значение проверки, которое будет включено по умолчанию, используя аргумент `Set`.

chk_state = BooleanVar()
chk_state.set(True)

Выход:

Если вы видите, значение проверки установлено в проверенное состояние.

Создание виджета RadioButton

Библиотека TTK предоставляет класс RadioButton, чтобы добавить виджеты радиоустановочных кнопок. Давайте создадим приложение Basic Restaurant Chords, которое позволяет пользователю выбрать размер пиццы, который они хотят заказать, нажав на нужную переключатель.

from tkinter import *
from tkinter.ttk import *
main_window = Tk()
main_window.geometry('600x200')
label_widget = Label(main_window, text="Please select the size of pizza you like to order:", font=("Arial Italic", 10))
label_widget.grid(column=0, row=0)
s1 = Spinbox(main_window, from_=0, to=100, width=5)
main_window.mainloop()

Выход:

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

Создание ящиков сообщений

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

Модуль Tkinter позволяет нам создавать окна сообщений, которые простые, но широко используемые виджеты. Коробки сообщений могут использоваться для отображения сообщения для пользователя, чтобы лучше понять, что пошло не так, либо давая предупреждение или сообщение об ошибке.

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

from tkinter import messagebox
main_window = Tk()
main_window.geometry('600x200')
def msgbox_demo():
    messagebox.showinfo("Info", "This is a sample Message box")
    messagebox.showwarning("Warning", "Save before exiting")
    messagebox.showerror("Error", "File not found")

    okcancel = messagebox.askokcancel("Exit without saving?")
    print(okcancel)

    yesno = messagebox.askyesno("Continue?")
    print(yesno)
b1 = Button(main_window, text='Display message boxes', command=msgbox_demo)
b1.pack(fill='x')
main_window.mainloop()

Приведенный выше код отображает следующий вывод.

Выход:

Вы можете увидеть окно сообщений один за другим, выбрав отображаемые параметры. Функция `msgbox_demo` позволяет 5 ящиков сообщений всплывают один после другого – каждый отображается после взаимодействия пользователя с предыдущим. Эти окна сообщения возвращают значения, основанные на решениях, в последовательности. Мы можем выбрать требуемый стиль сообщения в соответствии с нашими потребностями. Мы можем проверить состояние того, какую кнопку нажала, используя переменную результата. Если пользователь нажимает кнопку OK или YES или RETRY, функция вернет истинное значение. В случае, если пользователь выбирает кнопку «Нет» или «Отмена», функция вернет ложное значение.

Создание виджета Spinbox.

Виджет SpinBox похож на виджет ввода. Разница состоит в том, что входной виджет позволяет пользователю вводить значение в любом диапазоне. Принимая во внимание, что виджет SpinBox предоставляет диапазону значений для пользователя на выбор, из которого пользователь выбирает значение. Он используется для предотвращения диапазона значений на выбор. Ниже приведен образец для создания спина с использованием TKinter.

from tkinter import *
main_window = Tk()
main_window.geometry('600x200')
label_widget = Label(main_window, text="Please select number of pizzas you would like to order:", font=("Arial Italic", 10))
label_widget.grid(column=0, row=0)
s1 = Spinbox(main_window, from_=0, to=10, width=5)
s1.grid(column=1, row=0)
main_window.mainloop()

Вывод, как показано ниже.

Выход:

Создание виджета панели прогресса

Брелок Progress – это полезный элемент расширенных функций GUI. Это связано с тем, что индикатор прогресса дает представление пользователям, сколько времени нужно, чтобы загрузка, время, необходимое для загрузки и т. Д., Показываю прогресс выполнения задачи, происходящего на фоне, визуально. Эта функция является частью «модуля TTK». Следовательно, нам нужно импортировать модуль TTK для работы. В следующем примере показана примера реализации функции блока прогресса с использованием TKinter:

from tkinter import *
from tkinter.ttk import *
main_window = Tk()
main_window.geometry('300x200')
style = Style()
style.configure("black.Horizontal.TProgressbar", background='grey')
pbar = Progressbar(main_window, length=200, style='black.Horizontal.TProgressbar')
pbar['value'] = 40
pbar.grid(column=0, row=0)
main_window.mainloop()

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

Выход:

Создание виджета строки меню

Позволяя пользователю выбрать опцию из меню – это общая особенность графического пользовательского интерфейса. Виджет Menubar сочетается в себе хотя бы множество функциональных кнопок (например, вырезать, копирование или пасту). Создание даже сложных гидров может быть сделано в Jiffy, используя TKinter. Давайте посмотрим на следующий пример создания Menubar Widget:

from tkinter import *
from tkinter import Menu
root = Tk()
menu = Menu(root)
list_option = Menu(menu)
list_option.add_command(label='Cut')
list_option.add_command(label='Copy')
list_option.add_command(label='Paste')
menu.add_cascade(label='Edit', menu=list_option)
root.config(menu=menu)
root.mainloop()

Мы создали меню, используя функцию menu.add_cascade` Мы можем создать несколько предметов меню, которые нам нужны так же.

Выход:

Create-menu-tk

Заключение

Мы охватывали значительные аспекты развития Python GUI, используя TKinter. Надеюсь, что этот учебник поможет вам быстро построить Guis в ваших проектах Python.