Для того, щоб створити кнопку в Python 3 з обробкою натискання миші, знадобиться використовувати пакет або бібліотеку tkinter.
По суті tkinter package є стандартним інтерфейсом Python для інструментарію Tk GUI. Тому його можна використовувати для створення кнопки. Для освоєння цієї мови це буде цікава і корисна практика. Для початку слід імпортувати даний пакет і протестувати чи був він встановлений в використовуваному вами середовищі розробки.
Встановити tkinter в Лінуксі (Убунту) можна через термінал (виклик терміналу: Alt-Ctrl-T) набравши в терміналі sudo apt-get install python3-tk. Там же в терміналі можна дізнатися і встановлену версію Пітона (python - v).
Протестувати і дізнатися чи встановлений tkinter в середовищі розробки можна наступним чином:
import tkinter from tkinter import ttk tkinter._test()
Найпростіший приклад кнопки без обробника натискання миші можна прописати так:
from tkinter import * from tkinter.ttk import * root = Tk() button = Button(root, text ="Button") button.pack() root.mainloop()
Ще приклад простий до неподобства кнопки в Python 3:
import tkinter from tkinter import ttk root = tkinter.Tk() button = ttk.Button(root, text ="Press me") button.pack() root.mainloop()
Створення кнопки в Python 3 за допомогою tkinter
А ось цікавий приклад, в якому відразу три кнопки в одному фреймі (вікні) за допомогою бібліотеки tkinter:
- перша кнопка обробляє натискання миші і виводить після нього повідомлення на екран,
- друга кнопка при натисканні виводить актуальне на даний момент час на самій кнопці,
- третя кнопка після натискання на неї завершує свою роботу (роботу всього віджета).
Імпорт пакета як tk (скорочено). Імпорт бібліотеки часу.
import tkinter as tk import time
Створення вікна, в якому будуть відображатися кнопки. master - батьківський віджет. pack () - пакувальник для розміщення блоків один під іншим. Створення віджета.
class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.create_widgets()
Створення верхньої кнопки. Перша кнопка обробляє натискання миші і виводить після нього повідомлення на екран. Текст на кнопці, також кнопку можна оформити в потрібні кольори (колір тексту і фону), також можна вибрати шрифт (правда, прописаний шрифт у мене не спрацював, але описаний нижче для прикладу) і прописати розмір кнопки.
сommand прописує звернення до методу натискання миші на кнопку. Пакувальник pack необхідний для розміщення блоків один над іншим.
def create_widgets(self): self.hi_there = tk.Button(self, font="Verdana", bg="red", fg="black", width=7, height=4) self.hi_there["text"] = "Hello User\n(click me)" self.hi_there["command"] = self.say_hi self.hi_there.pack(side="top")
Створення другої кнопки Виходу з програми в тому ж методі створення віджета. Створення кнопки виходу з програми з видаленням всіх віджетів. Пакувальник для розміщення блоків один під іншим.
self.quit = tk.Button(self, text="QUIT", font="Arial", fg="red", bg="white", width=7,height=4, command=root.destroy) self.quit.pack(side="bottom")
Обробка натискання миші. Створення кнопки із зазначенням часу на ній на даний момент. Звернення до методу при натисканні на кнопку, який виведе актуальний на даний момент час.
self.button = tk.Button(self) self.button['text'] = time.strftime('%H:%M:%S') self.button['command'] = self.button_clicked self.button.pack(side="bottom")
Метод натискання кнопки. Створення методу для виведення інформації після натискання на кнопку.
def say_hi(self): print("text after press the button")
Створення методу, який виведе актуальний на даний момент час.
def button_clicked(self): self.button['text'] = time.strftime('%H:%M:%S')
Створення власного вікна.
root = tk.Tk()
Створення екземпляра класу.
app = Application(master=root)
Запуск головного циклу обробки подій.
app.mainloop()
А ось і повністю весь код прикладу трьох кнопок, який по шматочках описаний вище:
import tkinter as tk import time class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.create_widgets() def create_widgets(self): self.hi_there = tk.Button(self, font="Verdana", bg="red", fg="black", width=7, height=4) self.hi_there["text"] = "Hello User\n(click me)" self.hi_there["command"] = self.say_hi self.hi_there.pack(side="top") self.quit = tk.Button(self, text="QUIT", font="Arial", fg="red", bg="white", width=7,height=4, command=root.destroy) self.quit.pack(side="bottom") self.button = tk.Button(self) self.button['text'] = time.strftime('%H:%M:%S') self.button['command'] = self.button_clicked self.button.pack(side="bottom") def say_hi(self): print("text after press the button") def button_clicked(self): self.button['text'] = time.strftime('%H:%M:%S') root = tk.Tk() app = Application(master=root) app.mainloop()
Успіхів в навчанні!
P.S. Корисні посилання для освоєння матеріалу по створенню кнопок в Python на tkinter: