Рейтинг:  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()

Cоздание верхней кнопки. Первая кнопка обрабатывает нажатие мыши и выводит после него сообщение на экран. Текст на кнопке, также кнопку можно оформить в нужные цвета (цвет текста и фона), также можно выбрать шрифт (правда, прописанный шрифт у меня не сработал, но описан ниже для примера) и прописать размер кнопки.

с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: