В этом руководстве по Python Tkinter давайте обсудим список задач Python Tkinter . Шаг за шагом мы увидим, как создать список задач с помощью Python Tkinter.
- О списке задач Tkinter в Python Tkinter
- Особенности списка дел в Python Tkinter.
- Объяснение кода для списка задач в Python Tkinter.
- исходный код списка дел с объяснением с использованием Python Tkinter
О списке задач Tkinter в Python Tkinter
- Python ToDo List — это нашзозданный файл, в котором содержится информация о предстоящих задачах или событиях.
- Пользователям нужно удобное программное обеспечение, которое можно быстро использовать для создания быстрых заметок. И здесь используется список дел.
- В этом руководстве мы создадим простое приложение списка дел с использованием Python Tkinter , которое поможет пользователям систематизировать свои короткие заметки, сообщения или задачи.
- Если мы говорим об обычном приложении списка дел, то мы заметим текстовую область, в которой пользователь может ввести сообщение, кнопку, удерживающую
Особенности списка дел в Python Tkinter
В этом разделе мы обсудим функции, которые мы собираемся добавить в наше приложение to-do.
- Список : мы будем использовать Python Tkinter Listbox для отображения нескольких задач, расположенных друг за другом. А задачи можно выбирать при нажатии на нее.
- Полосы прокрутки: Полосы прокрутки помогут нам складывать большое количество данных, не беспокоясь о пространстве в окне. Доступ к задачам можно получить, прокрутив список.
- Фрейм: Фрейм будет использоваться для размещения внутри него таких виджетов, как список и полосы прокрутки. Это даст нам возможность выровнять Listbox по левому краю и полосу прокрутки по правому краю, чтобы они выглядели параллельно и идеально.
- Кнопки: мы добавим в окно два виджета-кнопки . Один из них — добавить больше задач в Listbox, а другой — удалить задачи из Listbox.
- Поле ввода : пользователи будут вводить задачу в поле ввода, которое в дальнейшем будет отображаться в списке.
- Окно сообщения: окно сообщения Python Tkinter используется для отображения сообщения об ошибке, когда пользователь нажимает кнопку добавления с пустым полем ввода.
Объяснение кода для списка задач в Python Tkinter
В этом разделе мы разберемся с исходным кодом списка задач в Python Tkinter . Весь код объясняется в последовательности создания.
Шаг 1 : Импорт модулей
Прежде чем мы начнем использовать Tkinter, нам нужно вызвать Tkinter для использования. поэтому мы импортируем модуль. Здесь * означает все. Итак, мы импортируем все из Tkinter, затем во второй строке мы импортируем окно сообщения из Tkinter.
from tkinter import *
from tkinter import messagebox
Шаг 2: Создайте и настройте окно
После импорта модуля мы создадим окно, чтобы разместить в нем виджеты.
- ws используется для инициализации Tk() . Теперь ws будет вызываться как родительское окно. Все остальные виджеты будут размещены на нем.
- ws.geometry(‘width x height + x-position+ y-position’)
Все предоставленные значения должны быть целыми числами.- ширина относится к горизонтальному пространству окна.
- высота относится к вертикальному пространству окна.
- x-position относится к положению окна на дисплее относительно оси x.
- Y-позиция относится к положению окна на дисплее относительно оси Y.
- title добавит заголовок к окну . В нашем случае мы указали название нашего веб-сайта в качестве заголовка. Вы можете найти заголовок в верхнем левом углу окна рядом с пером.
- config используется для задания цвета фона окна.
- resizable принимает логические значения. Поскольку логические значения предоставлены как false для высоты и ширины, это означает, что размер окна нельзя изменить. Чтобы узнать больше об изменении размера, прочитайте наш блог о размере окон python Tkinter.
- ws.mainloop() удерживает экран, чтобы мы могли видеть окно. Это бесконечный цикл. экран появляется, а затем исчезает, но с этим бесконечным циклом этот процесс появления и исчезновения продолжает происходить очень быстро. И мы продолжаем видеть обновленное окно.
ws = Tk() ws.geometry('500x450+500+200') ws.title('PythonGuides') ws.config(bg='#223441') ws.resizable(width=False, height=False) .... .... ws.mainloop()
Шаг 3: Создание рамки
В этом разделе мы поймем, почему мы использовали фреймы в качестве первого виджета в нашем коде.
- Виджеты Frame используются для хранения других виджетов.
- Они помогают поддерживать чистоту и организованность пользовательского интерфейса (UI) и взаимодействия с пользователем (UX).
- Двигаясь вперед, мы разместим список, полосы прокрутки и кнопки внутри фрейма.
- Таким образом, рамка будет действовать как дополнительное окно над родительским окном.
- Еще одним преимуществом размещения фрейма является то, что теперь мы добавим полосы прокрутки к фрейму, и это решает нашу задачу.
- Полосы прокрутки разместить непросто, но с помощью фреймов мы можем сделать это в кратчайшие сроки.
- pady=10 означает, что мы добавили дополнительные отступы вокруг фрейма снаружи.
frame = Frame(ws)
frame.pack(pady=10)
Шаг 4: Добавление списка
В этом разделе мы узнаем, почему и как мы использовали Listbox в окне.
- lb — это имя переменной для хранения Listbox.
- Listbox размещается на рамке окна.
- ширина: предоставленное горизонтальное пространство равно 25.
- высота: предусмотрено 8 рядов в вертикальном положении.
- Шрифт: шрифт Times New Roman имеет 14 размеров.
- bd = 0 относится к границе нуля
- fg — цвет переднего плана или цвет текста.
- highlightthickness=0 каждый раз, когда фокус перемещается на любой элемент, тогда он не должен показывать никакого движения, которое имеет значение 0. по умолчанию он имеет некоторое значение.
- selectbackground определяет цвет выделенного элемента в списке.
- activestyle=”none” удаляет подчеркивание, которое появляется, когда элемент выбран или находится в фокусе.
- используется менеджер геометрии pack()
- side=LEFT , это сохранит список в левой части фрейма. Мы сделали это специально, чтобы мы могли назначить правильную позицию полосам прокрутки.
- fill=BOTH это заполнит пустое пространство в обоих направлениях, которые являются x и y
lb = Listbox( frame, width=25, height=8, font=('Times', 18), bd=0, fg='#464646', highlightthickness=0, selectbackground='#a6a6a6', activestyle="none", ) lb.pack(side=LEFT, fill=BOTH)
Шаг 5: Добавление фиктивных данных
- Мы добавили фиктивные данные, чтобы приложение было готово к просмотру. Вы добавляете или удаляете любые данные, которые хотите.
- данные имеют формат списка и хранятся в переменной с именем task_list .
- Цикл for используется для вставки данных в список.
- каждый раз, когда цикл запускается, он добавляет элемент в список, и этот процесс продолжается до тех пор, пока не будут вставлены все элементы в списке задач .
- lb.insert(END, item) эта команда упорядочивает элементы списка.
- lb — это переменная, используемая для Listbox.
- insert — это встроенный метод Listbox для вставки данных.
- END означает, что в конце будет добавлен новый элемент. Если END заменить на 0 , то новые данные будут добавлены вверху.
- item — это элемент списка из task_list
task_list = [ 'Eat apple', 'drink water', 'go gym', 'write software', 'write documentation', 'take a nap', 'Learn something', 'paint canvas' ] for item in task_list: lb.insert(END, item)
Шаг 6: Добавление полос прокрутки
В этом разделе мы поймем, почему и как в окно добавляются полосы прокрутки.
- Полосы прокрутки используются для того, чтобы пользователи могли прокручивать информацию, размещенную в окне ограниченного размера.
- В этом случае полосы прокрутки размещаются на фрейме, а назначенной переменной является sb.
- Используемый метод геометрии — это pack(), так что все остается динамическим и в последовательности.
- side=RIGHT мы разместили полосы прокрутки с правой стороны фрейма.
- В приведенном выше коде мы указали side=LEFT для Listbox. Таким образом, оба виджета назначаются параллельно.
- fill=BOTH это заполнит пустое пространство в обоих направлениях, которые являются x и y
- lb.config(yscrollcommand=sb.set) здесь мы определили назначение полосы прокрутки. Другими словами, у нас есть привязка списка к полосе прокрутки.
- sb.config(command=lb.yview) , здесь yview означает, что полоса прокрутки будет двигаться в вертикальном направлении. Если бы это был xview, полоса прокрутки работала бы в горизонтальном направлении.
sb = Scrollbar(frame) sb.pack(side=RIGHT, fill=BOTH) lb.config(yscrollcommand=sb.set) sb.config(command=lb.yview)
Шаг 7: Добавление окна ввода
- Поле ввода используется для ввода информации от пользователя.
- ws : поле ввода помещается в родительское окно
- шрифт: обеспечивает имя шрифта, т.е. «Times New Roman» и размер 14
- Используемый менеджер геометрии представляет собой пакет с отступом 20 за пределами виджета.
my_entry = Entry( ws, font=('times', 24) ) my_entry.pack(pady=20)
Шаг: 8 Добавляем еще одну рамку для кнопок
Фреймы используются для организации виджетов. Мы использовали отдельную рамку для кнопок.
button_frame = Frame(ws)
button_frame.pack(pady=20)
Шаг 9: Добавление кнопок
- Кнопки размещены так, чтобы при нажатии запускать какое-то действие.
- Здесь мы создали две кнопки ( addTask и deleteTask ). Оба они имеют одинаковые функции и принимают цвет фона и команды.
- Команда : при нажатии кнопки вызывается функция, указанная в команде. В этом случае, если пользователь нажимает кнопку addTask_btn , вызывается функция newTask , а когда пользователь нажимает кнопку delTask_btn , вызывается функция delTask .
addTask_btn = Button( button_frame, text='Add Task', font=('times 14'), bg='#c5f776', padx=20, pady=10, command=newTask ) addTask_btn.pack(fill=BOTH, expand=True, side=LEFT) delTask_btn = Button( button_frame, text='Delete Task', font=('times 14'), bg='#ff8b61', padx=20, pady=10, command=deleteTask ) delTask_btn.pack(fill=BOTH, expand=True, side=LEFT)
Шаг 10: функция newTask()
- В этой функции мы сохранили значение поля ввода в переменной задачи
- Метод get() используется для извлечения значения, предоставленного пользователем в поле ввода.
- Условие if-else применяется, чтобы избежать появления пробела в списке.
- если у задачи нет пустого места, то только она позволит ей сохранить информацию в списке, в противном случае она отобразит окно предупреждающего сообщения, информирующее пользователя о том, что поле ввода не может быть пустым.
def newTask(): task = my_entry.get() if task != "": lb.insert(END, task) my_entry.delete(0, "end") else: messagebox.showwarning("warning", "Please enter some task.")
Шаг 11: функция deleteTask()
- Здесь ANCHOR относится к выбранному элементу в списке.
- lb переменная, назначенная Listbox
- delete — это встроенная функция для удаления элемента Listbox.
- Пользователь выберет элемент в списке, а затем, чтобы активировать эту функцию, он / она нажмет кнопку удаления задачи . Сразу же элемент исчезнет из списка.
def deleteTask():
lb.delete(ANCHOR)
Полный исходный код:
from tkinter import * from tkinter import messagebox def newTask(): task = my_entry.get() if task != "": lb.insert(END, task) my_entry.delete(0, "end") else: messagebox.showwarning("warning", "Please enter some task.") def deleteTask(): lb.delete(ANCHOR) ws = Tk() ws.geometry('500x450+500+200') ws.title('PythonGuides') ws.config(bg='#223441') ws.resizable(width=False, height=False) frame = Frame(ws) frame.pack(pady=10) lb = Listbox( frame, width=25, height=8, font=('Times', 18), bd=0, fg='#464646', highlightthickness=0, selectbackground='#a6a6a6', activestyle="none", ) lb.pack(side=LEFT, fill=BOTH) task_list = [ 'Eat apple', 'drink water', 'go gym', 'write software', 'write documentation', 'take a nap', 'Learn something', 'paint canvas' ] for item in task_list: lb.insert(END, item) sb = Scrollbar(frame) sb.pack(side=RIGHT, fill=BOTH) lb.config(yscrollcommand=sb.set) sb.config(command=lb.yview) my_entry = Entry( ws, font=('times', 24) ) my_entry.pack(pady=20) button_frame = Frame(ws) button_frame.pack(pady=20) addTask_btn = Button( button_frame, text='Add Task', font=('times 14'), bg='#c5f776', padx=20, pady=10, command=newTask ) addTask_btn.pack(fill=BOTH, expand=True, side=LEFT) delTask_btn = Button( button_frame, text='Delete Task', font=('times 14'), bg='#ff8b61', padx=20, pady=10, command=deleteTask ) delTask_btn.pack(fill=BOTH, expand=True, side=LEFT) ws.mainloop()
Вот выходной скриншот для приведенного выше кода. Здесь вы можете заметить, что Listbox появляется с полосой прокрутки. Поле ввода я разместил прямо под ним, а затем две кнопки.
Вот как мы можем создать список задач, используя Python Tkinter с самого начала.