Рейтинг користувача: 4 / 5

Активна зіркаАктивна зіркаАктивна зіркаАктивна зіркаНеактивна зірка
 

Для того, щоб створити кнопку в 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:

  1. перша кнопка обробляє натискання миші і виводить після нього повідомлення на екран,
  2. друга кнопка при натисканні виводить актуальне на даний момент час на самій кнопці,
  3. третя кнопка після натискання на неї завершує свою роботу (роботу всього віджета).

Імпорт пакета як 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: