Графический интерфейс на python: GUI (графический интерфейс пользователя) | Python 3 для начинающих и чайников

Содержание

Диалоговые окна в PyQt5 | Python 3 для начинающих и чайников

Диалоговые окна (диалоги) являются неотъемлемой частью большинства современных графических приложений. Диалог в обычной жизни — это беседа между двумя и более людьми. В компьютерном приложении, диалог – это окно, которое используется, чтобы «беседовать» с приложением. Диалоги используются для ввода и изменения данных, изменения настроек приложения, и так далее.

QInputDialog

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit,
    QInputDialog, QApplication)


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.btn = QPushButton('Dialog', self)
        self.btn.move(20, 20)
        self.btn.clicked.connect(self.showDialog)

        self.le = QLineEdit(self)
        self.le.move(130, 22)

        self.setGeometry(300, 300, 290, 150)
        self.setWindowTitle('Input dialog')
        self.show()


    def showDialog(self):

        text, ok = QInputDialog.getText(self, 'Input Dialog',
            'Enter your name:')

        if ok:
            self.le.setText(str(text))


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

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

text, ok = QInputDialog.getText(self, 'Input Dialog', 'Enter your name:')

Эта строка показывает диалог ввода. Первая строка – это заголовок диалога, вторая – сообщение внутри диалога. Диалог возвращает введённый текст и логическое значение. Если мы нажимаем кнопку «ОК», то логическое значение является правдой.

if ok:
    self.le.setText(str(text))

Текст, который мы получили из диалога, устанавливается в виджет редактирования строки.

QColorDialog

QColorDialog — виджет диалога для выбора цветовых значений.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame,
    QColorDialog, QApplication)
from PyQt5.QtGui import QColor


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        col = QColor(0, 0, 0)

        self.btn = QPushButton('Dialog', self)
        self.btn.move(20, 20)

        self.btn.clicked.connect(self.showDialog)

        self.frm = QFrame(self)
        self.frm.setStyleSheet("QWidget { background-color: %s }"
            % col.name())
        self.frm.setGeometry(130, 22, 100, 100)

        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('Color dialog')
        self.show()


    def showDialog(self):

        col = QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet("QWidget { background-color: %s }"
                % col.name())


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Пример приложения показывает кнопку и QFrame. Фон виджета устанавливается чёрным. Используя QColorDialog, мы можем менять фон.

col = QColor(0, 0, 0)

Это первоначальный цвет фона QtGui.QFrame.

col = QColorDialog.getColor()

Это строка высветит QColorDialog.

if col.isValid():
    self.frm.setStyleSheet("QWidget { background-color: %s }"
        % col.name())

Мы проверяем, является ли цвет валидным. Если мы нажимаем кнопку «Cancel», возвращается невалидный цвет. Если цвет валиден, мы меняем цвет фона, используя таблицы стилей (CSS).

QFontDialog

QFontDialog – это виджет диалога для выбора шрифта.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QPushButton,
    QSizePolicy, QLabel, QFontDialog, QApplication)


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        vbox = QVBoxLayout()

        btn = QPushButton('Dialog', self)
        btn.setSizePolicy(QSizePolicy.Fixed,
            QSizePolicy.Fixed)

        btn.move(20, 20)

        vbox.addWidget(btn)

        btn.clicked.connect(self.showDialog)

        self.lbl = QLabel('Knowledge only matters', self)
        self.lbl.move(130, 20)

        vbox.addWidget(self.lbl)
        self.setLayout(vbox)

        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('Font dialog')
        self.show()


    def showDialog(self):

        font, ok = QFontDialog.getFont()
        if ok:
            self.lbl.setFont(font)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

В нашем примере, мы имеем кнопку и метку. С помощью QFontDialog, мы меняем шрифт метки.

QFileDialog

QFileDialog – это диалог, который позволяет пользователям выбирать файлы или папки. Файлы могут быть выбраны и для открытия, и для сохранения.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QMainWindow, QTextEdit,
    QAction, QFileDialog, QApplication)
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.textEdit = QTextEdit()
        self.setCentralWidget(self.textEdit)
        self.statusBar()

        openFile = QAction(QIcon('open.png'), 'Open', self)
        openFile.setShortcut('Ctrl+O')
        openFile.setStatusTip('Open new File')
        openFile.triggered.connect(self.showDialog)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(openFile)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('File dialog')
        self.show()


    def showDialog(self):

        fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0]

        f = open(fname, 'r')

        with f:
            data = f.read()
            self.textEdit.setText(data)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Пример показывает строку меню, виджет редактирования текста и строку состояния. Пункт меню показывает QtGui.QFileDialog, который используется для выбора файла. Содержимое файла загружается в виджет редактирования текста.

fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0]

Мы показываем QFileDialog. Первая строка в методе getOpenFileName() – это заголовок. Вторая строка указывает на показываемую директорию. По умолчанию, файловый фильтр установлен в положение «Все файлы (*)».

f = open(fname, 'r')

with f:
    data = f.read()
    self.textEdit.setText(data)

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

В этой части руководства PyQt5, мы работали с диалогами.

Меню и тулбары в PyQt5

В этой части учебника PyQt5, мы создадим меню и тулбар (панель инструментов). Меню представляет собой группу команд, расположенных в менюбаре. Панель инструментов содержит кнопки с некоторыми общими командами в приложении.

Главное окно

Класс QMainWindow предоставляет главное окно приложения. Это позволяет создать классический каркас приложений с статусбаром, тулбаром и меню.

Статусбар (строка состояния)

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QMainWindow, QApplication


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.statusBar().showMessage('Ready')

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Statusbar')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Статусбар создаётся с помощью функции QMainWindow.

self.statusBar().showMessage('Ready')

Чтобы получить строку состояния, мы вызываем метод statusBar() класса QtWidgets.QMainWindow. Первый вызов метода создает строку состояния. Последующие вызовы возвращают объект статусбара. showMessage() отображает сообщение в строке состояния.

Строка меню

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        exitAction = QAction(QIcon('exit.png'), '&Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(qApp.quit)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

В приведенном выше примере, мы создаем строку меню с одним меню. Это меню будет содержать одно действие, которое будет прекращать программу. Строка состояния также создается. Действие доступно с помощью Ctrl + Q.

exitAction = QAction(QIcon('exit.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')

QAction является абстракцией для действий, совершенных из меню, панели инструментов, или комбинаций клавиш. В этих трех строках, мы создаем действие с соответствующей иконкой. Кроме того, для этого действия определяется комбинация клавиш. Третья строка создает подсказку, которая показывается в строке состояния, когда вы наведёте указатель мыши на пункт меню.

exitAction.triggered.connect(qApp.quit)

Когда мы выбираем именно это действие, срабатывает сигнал. Сигнал подключен к методу quit() виджета QApplication. Это завершает приложение.

menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)

Метод menuBar() создает строку меню. Мы создаем меню файла и добавляем к нему действие выхода.

Панель инструментов (тулбар)

Меню группируют все команды, которые мы можем использовать в приложении.

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)

        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Toolbar')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Здесь практически всё аналогично статусбару.

Объединяя все вместе

В последнем примере этого раздела мы создадим строку меню, панель инструментов и статусную строку. Мы также создадим центральный виджет.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        textEdit = QTextEdit()
        self.setCentralWidget(textEdit)

        exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.close)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        toolbar = self.addToolBar('Exit')
        toolbar.addAction(exitAction)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Данный пример кода создает скелет классического приложения с графическим интерфейсом с меню, тулбаром и статусбаром.

textEdit = QTextEdit()
self.setCentralWidget(textEdit)

Здесь мы создаем виджет редактирования текста. Мы его назначаем центральным виджетом QMainWindow. Центральный виджет занимает все пространство, которое осталось.

В этой части урока PyQt5, мы работали с меню, панелью инструментов, строкой состояния и главным окном приложения.

Создание графического интерфейса на Python 3 с Tkinter ~ PythonRu

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

Библиотека Tkinter установлена в Python в качестве стандартного модуля, поэтому нам не нужно устанавливать что-либо для его использования. Tkinter — очень мощная библиотека. Если вы уже установили Python, можете использовать IDLE, который является интегрированной IDE, поставляемой в Python, эта IDE написана с использованием Tkinter. Звучит круто!

Мы будем использовать Python 3.7 поэтому, если вы все еще используете Python 2.x, настоятельно рекомендуем перейти на Python 3.x, если вы не в курсе нюансов изменения языка, с целью, чтобы вы могли настроить код для запуска без ошибок.

Давайте предположим, что у вас уже есть базовые знания по Python, которые помогут понять что мы будем делать.
Мы начнем с создания окна, в котором мы узнаем, как добавлять виджеты, такие, как кнопки, комбинированные поля и т. д. После этого поэкспериментируем со своими свойствами, поэтому предлагаю начать.

Создание своего первого графического интерфейса

Для начала, следует импортировать Tkinter и создать окно, в котором мы зададим его название:

from tkinter import *


window = Tk()
window.title("Добро пожаловать в приложение PythonRu")
window.mainloop()

Результат будет выглядеть следующим образом:

Прекрасно! Наше приложение работает.
Последняя строка вызывает функцию mainloop. Эта функция вызывает бесконечный цикл окна, поэтому окно будет ждать любого взаимодействия с пользователем, пока не будет закрыто.

В случае, если вы забудете вызвать функцию mainloop , для пользователя ничего не отобразится.

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

Чтобы добавить текст в наш предыдущий пример, мы создадим lbl , с помощью класса Label, например:

lbl = Label(window, text="Привет")

Затем мы установим позицию в окне с помощью функции grid и укажем ее следующим образом:

lbl.grid(column=0, row=0)

Полный код, будет выглядеть следующим образом:

from tkinter import *  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
lbl = Label(window, text="Привет")  
lbl.grid(column=0, row=0)  
window.mainloop()

И вот как будет выглядеть результат:

Если функция grid не будет вызвана, текст не будет отображаться.

Настройка размера и шрифта текста

Вы можете задать шрифт текста и размер. Также можно изменить стиль шрифта. Для этого передайте параметр font таким образом:

lbl = Label(window, text="Привет", font=("Arial Bold", 50))

Обратите внимание, что параметр font может быть передан любому виджету, для того, чтобы поменять его шрифт, он применяется не только к Label.

Отлично, но стандартное окно слишком мало. Как насчет настройки размера окна?

Настройка размеров окна приложения

Мы можем установить размер окна по умолчанию, используя функцию geometry следующим образом:

window.geometry('400x250')

В приведенной выше строке устанавливается окно шириной до 400 пикселей и высотой до 250 пикселей.

Попробуем добавить больше виджетов GUI, например, кнопки и посмотреть, как обрабатывается нажатие кнопок.

Добавление виджета Button

Начнем с добавления кнопки в окно. Кнопка создается и добавляется в окно так же, как и метка:

btn = Button(window, text="Не нажимать!")
btn.grid(column=1, row=0)

Наш код будет выглядеть вот так:

from tkinter import *  
  

window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
lbl = Label(window, text="Привет", font=("Arial Bold", 50))  
lbl.grid(column=0, row=0)  
btn = Button(window, text="Не нажимать!")  
btn.grid(column=1, row=0)  
window.mainloop()

Результат будет следующим:

Обратите внимание, что мы помещаем кнопку во второй столбец окна, что равно 1. Если вы забудете и поместите кнопку в том же столбце, который равен 0, он покажет только кнопку.

Изменение цвета текста и фона у Button

Вы можете поменять цвет текста кнопки или любого другого виджета, используя свойство fg.
Кроме того, вы можете поменять цвет фона любого виджета, используя свойство bg.

btn = Button(window, text="Не нажимать!", bg="black", fg="red")

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

Кнопка Click

Для начала, мы запишем функцию, которую нужно выполнить при нажатии кнопки:

def clicked():
    lbl.configure(text="Я же просил...")

Затем мы подключим ее с помощью кнопки, указав следующую ​​функцию:

btn = Button(window, text="Не нажимать!", command=clicked)

Обратите внимание: мы пишем clicked, а не clicked()с круглыми скобками. Теперь полный код будет выглядеть так:

from tkinter import *  
  
  
def clicked():  
    lbl.configure(text="Я же просил...")  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
lbl = Label(window, text="Привет", font=("Arial Bold", 50))  
lbl.grid(column=0, row=0)  
btn = Button(window, text="Не нажимать!", command=clicked)  
btn.grid(column=1, row=0)  
window.mainloop()

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

Круто!

Получение ввода с использованием класса Entry (текстовое поле Tkinter)

В предыдущих примерах GUI Python мы ознакомились со способами добавления простых виджетов, а теперь попробуем получить пользовательский ввод, используя класс Tkinter Entry (текстовое поле Tkinter).
Вы можете создать текстовое поле с помощью класса Tkinter Entry следующим образом:

txt = Entry(window, width=10)

Затем вы можете добавить его в окно, используя функцию grid.
Наше окно будет выглядеть так:

from tkinter import *  
  
  
def clicked():  
    lbl.configure(text="Я же просил...")  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
lbl = Label(window, text="Привет")  
lbl.grid(column=0, row=0)  
txt = Entry(window,width=10)  
txt.grid(column=1, row=0)  
btn = Button(window, text="Не нажимать!", command=clicked)  
btn.grid(column=2, row=0)  
window.mainloop()

Полученный результат будет выглядеть так:

Теперь, если вы нажмете кнопку, она покажет то же самое старое сообщение, но что же будет с отображением введенного текста в виджет Entry?

Во-первых, вы можете получить текст ввода, используя функцию get. Мы можем записать код для выбранной функции таким образом:

def clicked():
    res = "Привет {}".format(txt.get())
    lbl.configure(text=res)

Если вы нажмете на кнопку — появится текст «Привет » вместе с введенным текстом в виджете записи. Вот полный код:

from tkinter import *  
  
  
def clicked():  
    res = "Привет {}".format(txt.get())  
    lbl.configure(text=res)  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
lbl = Label(window, text="Привет")  
lbl.grid(column=0, row=0)  
txt = Entry(window,width=10)  
txt.grid(column=1, row=0)  
btn = Button(window, text="Клик!", command=clicked)  
btn.grid(column=2, row=0)  
window.mainloop()

Запустите вышеуказанный код и проверьте результат:

Прекрасно!

Каждый раз, когда мы запускаем код, нам нужно нажать на виджет ввода, чтобы настроить фокус на ввод текста, но как насчет автоматической настройки фокуса?

Установка фокуса виджета ввода

Здесь все очень просто, ведь все, что нам нужно сделать, — это вызвать функцию focus:

txt.focus()

Когда вы запустите свой код, вы заметите, что виджет ввода в фокусе, который дает возможность сразу написать текст.

Отключить виджет ввода

Чтобы отключить виджет ввода, отключите свойство состояния:

txt = Entry(window,width=10, state='disabled')

Теперь вы не сможете ввести какой-либо текст.

Добавление виджета Combobox

Чтобы добавить виджет поля с выпадающем списком, используйте класс Combobox из ttk следующим образом:

from tkinter.ttk import Combobox


combo = Combobox(window)

Затем добавьте свои значения в поле со списком.

from tkinter import *  
from tkinter.ttk import Combobox  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
combo = Combobox(window)  
combo['values'] = (1, 2, 3, 4, 5, "Текст")  
combo.current(1)  
combo.grid(column=0, row=0)  
window.mainloop()

Как видите с примера, мы добавляем элементы combobox, используя значения tuple.
Чтобы установить выбранный элемент, вы можете передать индекс нужного элемента текущей функции.
Чтобы получить элемент select, вы можете использовать функцию get вот таким образом:

combo.get()

Добавление виджета Checkbutton (чекбокса)

С целью создания виджета checkbutton, используйте класс Checkbutton:

from tkinter.ttk import Checkbutton


chk = Checkbutton(window, text='Выбрать')

Кроме того, вы можете задать значение по умолчанию, передав его в параметр var в Checkbutton:

from tkinter import *  
from tkinter.ttk import Checkbutton  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
chk_state = BooleanVar()  
chk_state.set(True)  
chk = Checkbutton(window, text='Выбрать', var=chk_state)  
chk.grid(column=0, row=0)  
window.mainloop()

Посмотрите на результат:

Установка состояния Checkbutton

Здесь мы создаем переменную типа BooleanVar, которая не является стандартной переменной Python, это переменная Tkinter, затем передаем ее классу Checkbutton, чтобы установить состояние чекбокса как True в приведенном выше примере.

Вы можете установить для BooleanVar значение false, что бы чекбокс не был отмечен.
Так же, используйте IntVar вместо BooleanVar и установите значения 0 и 1.

chk_state = IntVar()
chk_state.set(0) 
chk_state.set(1) 

Эти примеры дают тот же результат, что и BooleanVar.

Добавление виджетов Radio Button

Чтобы добавить radio кнопки, используйте класс RadioButton:

rad1 = Radiobutton(window,text='Первый', value=1)

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

from tkinter import *  
from tkinter.ttk import Radiobutton  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
rad1 = Radiobutton(window, text='Первый', value=1)  
rad2 = Radiobutton(window, text='Второй', value=2)  
rad3 = Radiobutton(window, text='Третий', value=3)  
rad1.grid(column=0, row=0)  
rad2.grid(column=1, row=0)  
rad3.grid(column=2, row=0)  
window.mainloop()

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

Кроме того, вы можете задать command любой из этих кнопок для определенной функции. Если пользователь нажимает на такую кнопку, она запустит код функции.
Вот пример:

rad1 = Radiobutton(window,text='Первая', value=1, command=clicked)

def clicked():
    

Достаточно легко!

Получение значения Radio Button (Избранная Radio Button)

Чтобы получить текущую выбранную radio кнопку или ее значение, вы можете передать параметр переменной и получить его значение.

from tkinter import *  
from tkinter.ttk import Radiobutton  
  
  
def clicked():  
    lbl.configure(text=selected.get())  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
selected = IntVar()  
rad1 = Radiobutton(window,text='Первый', value=1, variable=selected)  
rad2 = Radiobutton(window,text='Второй', value=2, variable=selected)  
rad3 = Radiobutton(window,text='Третий', value=3, variable=selected)  
btn = Button(window, text="Клик", command=clicked)  
lbl = Label(window)  
rad1.grid(column=0, row=0)  
rad2.grid(column=1, row=0)  
rad3.grid(column=2, row=0)  
btn.grid(column=3, row=0)  
lbl.grid(column=0, row=1)  
window.mainloop()

Каждый раз, когда вы выбираете radio button, значение переменной будет изменено на значение кнопки.

Добавление виджета ScrolledText (текстовая область Tkinter)

Чтобы добавить виджет ScrolledText, используйте класс ScrolledText:

from tkinter import scrolledtext


txt = scrolledtext.ScrolledText(window,width=40,height=10)

Здесь нужно указать ширину и высоту ScrolledText, иначе он заполнит все окно.

from tkinter import *  
from tkinter import scrolledtext  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
txt = scrolledtext.ScrolledText(window, width=40, height=10)  
txt.grid(column=0, row=0)  
window.mainloop()

Результат:

Настройка содержимого Scrolledtext

Используйте метод insert, чтобы настроить содержимое Scrolledtext:

txt.insert(INSERT, 'Текстовое поле')

Удаление/Очистка содержимого Scrolledtext

Чтобы очистить содержимое данного виджета, используйте метод delete:

txt.delete(1.0, END)  

Отлично!

Создание всплывающего окна с сообщением

Чтобы показать всплывающее окно с помощью Tkinter, используйте messagebox следующим образом:

from tkinter import messagebox


messagebox.showinfo('Заголовок', 'Текст')

Довольно легко! Давайте покажем окно сообщений при нажатии на кнопку пользователем.

from tkinter import *  
from tkinter import messagebox  
  
  
def clicked():  
    messagebox.showinfo('Заголовок', 'Текст')  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
btn = Button(window, text='Клик', command=clicked)  
btn.grid(column=0, row=0)  
window.mainloop()

Когда вы нажмете на кнопку, появится информационное окно.

Показ сообщений о предупреждениях и ошибках

Вы можете показать предупреждающее сообщение или сообщение об ошибке таким же образом. Единственное, что нужно изменить—это функция сообщения.

messagebox.showwarning('Заголовок', 'Текст')  
messagebox.showerror('Заголовок', 'Текст')  

Показ диалоговых окон с выбором варианта

Чтобы показать пользователю сообщение “да/нет”, вы можете использовать одну из следующих функций messagebox:

from tkinter import messagebox


res = messagebox.askquestion('Заголовок', 'Текст')
res = messagebox.askyesno('Заголовок', 'Текст')
res = messagebox.askyesnocancel('Заголовок', 'Текст')
res = messagebox.askokcancel('Заголовок', 'Текст')
res = messagebox.askretrycancel('Заголовок', 'Текст')

Вы можете выбрать соответствующий стиль сообщения согласно вашим потребностям. Просто замените строку функции showinfo на одну из предыдущих и запустите скрипт. Кроме того, можно проверить, какая кнопка нажата, используя переменную результата.

Если вы кликнете OK, yes или retry, значение станет True, а если выберете no или cancel, значение будет False.
Единственной функцией, которая возвращает одно из трех значений, является функция askyesnocancel; она возвращает True/False/None.

Добавление SpinBox (Виджет спинбокс)

Для создания виджета спинбокса, используйте класс Spinbox:

spin = Spinbox(window, from_=0, to=100)

Таким образом, мы создаем виджет Spinbox, и передаем параметры from и to, чтобы указать диапазон номеров.
Кроме того, вы можете указать ширину виджета с помощью параметра width:

spin = Spinbox(window, from_=0, to=100, width=5)

Проверим пример полностью:

from tkinter import *  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
spin = Spinbox(window, from_=0, to=100, width=5)  
spin.grid(column=0, row=0)  
window.mainloop()

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

spin = Spinbox(window, values=(3, 8, 11), width=5)

Виджет покажет только эти 3 числа: 3, 8 и 11.

Задать значение по умолчанию для Spinbox

В случае, если вам нужно задать значение по умолчанию для Spinbox, вы можете передать значение параметру textvariable следующим образом:

var = IntVar()
var.set(36)
spin = Spinbox(window, from_=0, to=100, width=5, textvariable=var)

Теперь, если вы запустите программу, она покажет 36 как значение по умолчанию для Spinbox.

Добавление виджета Progressbar

Чтобы создать данный виджет, используйте класс progressbar :

from tkinter.ttk import Progressbar


bar = Progressbar(window, length=200)

Установите значение progressbar таким образом:

bar['value'] = 70

Вы можете установить это значение на основе любого процесса или при выполнении задачи.

Изменение цвета Progressbar

Изменение цвета Progressbar немного сложно. Сначала нужно создать стиль и задать цвет фона, а затем настроить созданный стиль на Progressbar. Посмотрите следующий пример:

from tkinter import *  
from tkinter.ttk import Progressbar  
from tkinter import ttk  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
style = ttk.Style()  
style.theme_use('default')  
style.configure("black.Horizontal.TProgressbar", background='black')  
bar = Progressbar(window, length=200,)  
bar['value'] = 70  
bar.grid(column=0, row=0)  
window.mainloop()

И в результате вы получите следующее:

Добавление поля загрузки файла

Для добавления поля с файлом, используйте класс filedialog:

from tkinter import filedialog


file = filedialog.askopenfilename()

После того, как вы выберете файл, нажмите “Открыть”; переменная файла будет содержать этот путь к файлу. Кроме того, вы можете запросить несколько файлов:

files = filedialog.askopenfilenames()

Указание типа файлов (расширение фильтра файлов)

Возможность указания типа файлов доступна при использовании параметра filetypes, однако при этом важно указать расширение в tuples.

file = filedialog.askopenfilename(filetypes = (("Text files","*.txt"),("all files","*.*")))

Вы можете запросить каталог, используя метод askdirectory :

dir = filedialog.askdirectory()

Вы можете указать начальную директорию для диалогового окна файла, указав initialdir следующим образом:

from os import path
file = filedialog.askopenfilename(initialdir= path.dirname(__file__))

Легко!

Добавление панели меню

Для добавления панели меню, используйте класс menu:

from tkinter import Menu


menu = Menu(window)
menu.add_command(label='Файл')
window.config(menu=menu)

Сначала мы создаем меню, затем добавляем наш первый пункт подменю. Вы можете добавлять пункты меню в любое меню с помощью функции add_cascade() таким образом:

menu.add_cascade(label='Автор', menu=new_item)

Наш код будет выглядеть так:

from tkinter import *  
from tkinter import Menu  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
menu = Menu(window)  
new_item = Menu(menu)  
new_item.add_command(label='Новый')  
menu.add_cascade(label='Файл', menu=new_item)  
window.config(menu=menu)  
window.mainloop()

Таким образом, вы можете добавить столько пунктов меню, сколько захотите.

from tkinter import *  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
menu = Menu(window)  
new_item = Menu(menu)  
new_item.add_command(label='Новый')  
new_item.add_separator()  
new_item.add_command(label='Изменить')  
menu.add_cascade(label='Файл', menu=new_item)  
window.config(menu=menu)  
window.mainloop()

Теперь мы добавляем еще один пункт меню “Изменить” с разделителем меню. Вы можете заметить пунктирную линию в начале, если вы нажмете на эту строку, она отобразит пункты меню в небольшом отдельном окне.

Можно отключить эту функцию, с помощью tearoff подобным образом:

new_item = Menu(menu, tearoff=0)

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

new_item.add_command(label='Новый', command=clicked)

Добавление виджета Notebook (Управление вкладкой)

Для удобного управления вкладками реализуйте следующее:

  • Для начала, создается элемент управления вкладкой, с помощью класса Notebook .
  • Создайте вкладку, используя класс Frame.
  • Добавьте эту вкладку в элемент управления вкладками.
  • Запакуйте элемент управления вкладкой, чтобы он стал видимым в окне.
from tkinter import *  
from tkinter import ttk  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
tab_control = ttk.Notebook(window)  
tab1 = ttk.Frame(tab_control)  
tab_control.add(tab1, text='Первая')  
tab_control.pack(expand=1, fill='both')  
window.mainloop()

Таким образом, вы можете добавлять столько вкладок, сколько нужно.

Добавление виджетов на вкладку

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

from tkinter import *  
from tkinter import ttk  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
tab_control = ttk.Notebook(window)  
tab1 = ttk.Frame(tab_control)  
tab2 = ttk.Frame(tab_control)  
tab_control.add(tab1, text='Первая')  
tab_control.add(tab2, text='Вторая')  
lbl1 = Label(tab1, text='Вкладка 1')  
lbl1.grid(column=0, row=0)  
lbl2 = Label(tab2, text='Вкладка 2')  
lbl2.grid(column=0, row=0)  
tab_control.pack(expand=1, fill='both')  
window.mainloop()

Добавление интервала для виджетов (Заполнение)

Вы можете добавить отступы для элементов управления, чтобы они выглядели хорошо организованными с использованием свойств padx иpady.

Передайте padx и pady любому виджету и задайте значение.

lbl1 = Label(tab1, text= 'label1', padx=5, pady=5)

Это очень просто!

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

Графический интерфейс на Python за 5 минут

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

Однако иногда ваша целевая аудитория не сильно подкована технически. Люди не против использовать ваши скрипты на Python до тех пор пока им не нужно смотреть на одну строку кода. В таком случае скриптов командной строки будет недостаточно. В идеале вам нужен графический интерфейс. Цель этого поста использовать только Python.

Библиотеки Python, которые можно использовать для графического интерфейса

По сути, есть 3 большие библиотеки Python для графического интерфейса; Tkinter, wxPython и PyQT. Рассматривая их, я не нашел там ничего из того, что мне нравится в Python. Библиотеки Python, как правило, очень хорошо абстрагируются от супер-технических моментов. Если бы мне нужно было работать с объектно-ориентированным программированием, я мог бы с таким же успехом загрузить Java или .Net.



Статья переведена при поддержке компании EDISON Software, которая заботится о здоровье программистов и их завтраке, а также разрабатывает программное обеспечение на заказ.

Однако, к счастью, я наткнулся на четвёртый вариант, который был мне по душе. Это PySimpleGUI, я до сих пор ей пользуюсь. Как ни странно, эта библиотека использует все 3 популярные библиотеки, о которых шла речь выше, но при этом абстрагируется от супер технических моментов

Давайте погрузимся в эту библиотеку и изучим ее, одновременно решая реальную проблему.

Проверьте два одинаковых файла

Я рассказал как это сделать в своей статье “3 быстрых способа сравнить данные в Python”. Мы можем использовать первый раздел, проверку целостности данных, чтобы попытаться создать пользовательский интерфейс.

  • 3 Quick Ways To Compare Data with Python

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

Запрограммируйте графический интерфейс

Чтобы создать графический интерфейс, можно использовать этот код:

import PySimpleGUI as sg
layout = [
    [sg.Text('File 1'), sg.InputText(), sg.FileBrowse(),
     sg.Checkbox('MD5'), sg.Checkbox('SHA1')
     ],
    [sg.Text('File 2'), sg.InputText(), sg.FileBrowse(),
     sg.Checkbox('SHA256')
     ],
    [sg.Output(size=(88, 20))],
    [sg.Submit(), sg.Cancel()]
]
window = sg.Window('File Compare', layout)
while True:                             # The Event Loop
    event, values = window.read()
    # print(event, values) #debug
    if event in (None, 'Exit', 'Cancel'):
        break

в результате мы получим:

Подключаем логику

Когда есть пользовательский интерфейс, легко понять, как подключить остальную часть кода. Нам просто нужно следить за тем, что вводит пользователь и действовать соответственно. Мы можем очень легко сделать это с помощью следующего кода:

import PySimpleGUI as sg
import re
import hashlib
def hash(fname, algo):
    if algo == 'MD5':
        hash = hashlib.md5()
    elif algo == 'SHA1':
        hash = hashlib.sha1()
    elif algo == 'SHA256':
        hash = hashlib.sha256()
    with open(fname) as handle: #opening the file one line at a time for memory considerations
        for line in handle:
            hash.update(line.encode(encoding = 'utf-8'))
    return(hash.hexdigest())
layout = [
    [sg.Text('File 1'), sg.InputText(), sg.FileBrowse(),
     sg.Checkbox('MD5'), sg.Checkbox('SHA1')
     ],
    [sg.Text('File 2'), sg.InputText(), sg.FileBrowse(),
     sg.Checkbox('SHA256')
     ],
    [sg.Output(size=(88, 20))],
    [sg.Submit(), sg.Cancel()]
]
window = sg.Window('File Compare', layout)
while True:                             # The Event Loop
    event, values = window.read()
    # print(event, values) #debug
    if event in (None, 'Exit', 'Cancel'):
        break
    if event == 'Submit':
        file1 = file2 = isitago = None
        # print(values[0],values[3])
        if values[0] and values[3]:
            file1 = re.findall('.+:\/.+\.+.', values[0])
            file2 = re.findall('.+:\/.+\.+.', values[3])
            isitago = 1
            if not file1 and file1 is not None:
                print('Error: File 1 path not valid.')
                isitago = 0
            elif not file2 and file2 is not None:
                print('Error: File 2 path not valid.')
                isitago = 0
            elif values[1] is not True and values[2] is not True and values[4] is not True:
                print('Error: Choose at least one type of Encryption Algorithm')
            elif isitago == 1:
                print('Info: Filepaths correctly defined.')
                algos = [] #algos to compare
                if values[1] == True: algos.append('MD5')
                if values[2] == True: algos.append('SHA1')
                if values[4] == True: algos.append('SHA256')
                filepaths = [] #files
                filepaths.append(values[0])
                filepaths.append(values[3])
                print('Info: File Comparison using:', algos)
                for algo in algos:
                    print(algo, ':')
                    print(filepaths[0], ':', hash(filepaths[0], algo))
                    print(filepaths[1], ':', hash(filepaths[1], algo))
                    if hash(filepaths[0],algo) == hash(filepaths[1],algo):
                        print('Files match for ', algo)
                    else:
                        print('Files do NOT match for ', algo)
        else:
            print('Please choose 2 files.')
window.close()

он даст нам такой результат:

Заключительные мысли

Может это и не самый красивый пользовательский интерфейс, но PySimpleGUI позволяет вам быстро разворачивать простые пользовательские интерфейсы Python и делиться ими с кем угодно. Код, который вам нужен для этого, прост и легко читается. У вас все еще будет проблема запуска кода для получения пользовательского интерфейса. Из-за этого могут возникнуть сложности с совместным использованием кода. Советую скачать что-то вроде PyInstaller, который превратит ваш скрипт на python в .exe файл. Люди смогут запустить его просто нажав на него дважды.

Создание графического интерфейса на Python с Tkinter. Обучение Python GUI

Графический интерфейс – неотъемлемая составляющая любого современного приложения. Даже во времена MS DOS, несмотря на тотальное доминирование командной строки в те времена, все равно начали появляться первые графические интерфейсы. Чего только стоит легендарный файловый менеджер Norton Commander? А для создания игр работа с графическими интерфейсами вообще является приоритетной.

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

Пример приложения, созданного с применением Tkinter – IDLE. Это очень популярная среда разработки приложений для Python.

Рекомендуется пользоваться Python 3.7 для того, чтобы проверять нашу инструкцию. Дело в том, что третья версия претерпела настолько существенные изменения, что использование второй версии уже далеко от реального программирования.

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

Создаем свой первый графический интерфейс

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

from tkinter import *

window = Tk()

window.title(«Добро пожаловать в приложение Python»)

window.mainloop()

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

Обратите внимание на последнюю строку. Она содержит метод mainloop(), который принадлежит объекту window. Она нужна для того, чтобы зациклить отображение окна. Если ее не использовать, то окно сразу закроется, и пользователь ничего не увидит.

Создаем виджет Label

Окно – это, конечно, прекрасно. Но что делать, если нам надо отобразить в нем какую-то надпись? Например, слово «Привет». Как это сделать?

Сначала необходимо добавить виджет. Для этого объявляется переменная (в нашем случае – lbl) с использованием следующего кода.

lbl = Label(window, text=»Привет»)

После этого мы задаем место, в котором будет размещаться наша надпись. В нашем случае это будет самый верх окна слева. Соответственно, необходимо задать такое положение:

lbl.grid(column=0, row=0)

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

from tkinter import *  

window = Tk()  

window.title(«Добро пожаловать в приложение Python»)  

lbl = Label(window, text=»Привет»)  

lbl.grid(column=0, row=0)  

window.mainloop()

Вызов метода grid – обязательный. Иначе пользователь не увидит текста, который мы захотели.

Настраиваем размер и шрифт текста

Tkinter – гибкая библиотека. В том числе, в ней можно редактировать текст, задавая произвольный тип шрифта и его размер. Для этого в скобках объекта Label задается свойство font. Характеристики в скобках записываются в следующей последовательности: сначала – начертание шрифта, а потом – его размер. Например, если указать шрифт «Arial Bold» 50 размера, то окно с нашей надписью будет уже поинтереснее.

lbl = Label(window, text=»Привет», font=(«Arial Bold», 50))

Этот параметр может использоваться, в том числе, и для других виджетов. Его можно применять не только к надписи. Если в виджете есть шрифт, его можно изменять.

Настраиваем размеры окна приложения

Программа у нас получилась отличная, конечно. Но, скажите, чего-то не хватает. Все правильно, окошко хотелось бы побольше. Что можно сделать для того, чтобы увеличить его?

Чтобы это сделать, используется метод geometry с аргументом в виде размеров окна, записанных в виде строки в формате «ширина»х«высота».

Например, так.

window.geometry(‘500×350’)

Эта строка делает размер окна по ширине 500 пикселей, а по высоте – 250.

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

Добавляем виджет Button

Теперь нам нужно добавить кнопку. Чтобы это сделать, необходимо создать объект соответствующего класса, а в свойствах задать текст, который будет на ней отображаться.

btn = Button(window, text=»Не нажимать!»)

btn.grid(column=1, row=0)

Мы добавили кнопку после метки в коде. В целом, у нас получилась такая программа.

from tkinter import *  

window = Tk()  

window.title(«Добро пожаловать в приложение Python»)  

window.geometry(‘400×250’)  

lbl = Label(window, text=»Привет», font=(«Arial Bold», 50))  

lbl.grid(column=0, row=0)  

btn = Button(window, text=»Не нажимать!»)  

btn.grid(column=1, row=0)  

window.mainloop()

После того, как этот код будет запущен, получится следующий результат.

Заметьте, что в коде выше мы указали позиционирование кнопки во втором столбце. Но поскольку индексация начинается с нуля, то, соответственно, мы написали индекс столбца 1. Если же его разместить с координатами 0,0, то он просто заменит надпись.

Как изменить цвет текста и фона у Button?

Кастомизация кнопок не ограничивается одним лишь изменением размера и начертания шрифтов. Например, можно сделать кнопку черной, а буквы на ней – красными. Для этого надо прописать соответствующие свойства: fg и bg. Они позволяют настроить цвет надписи и фон соответственно.

Точно так же, как и с размером и начертанием шрифта, с помощью этих свойств можно редактировать внешний вид любого другого элемента, не только кнопки. 

А теперь приведем пример кода, с помощью которого мы сделали надпись кнопки красной на черном фоне.

btn = Button(window, text=»Не нажимать!», bg=»black», fg=»red»)

Хорошо, а что сейчас будет, если нажать на кнопку? Если вы попробовали у себя написать аналогичный код, то вы увидите, что ничего не произойдет. Дело в том, что не был настроен обработчик события. Это такая функция, которая активируется при наступлении определенного события.

Кнопка Click

Давайте попробуем прописать действия приложения на случай, если пользователь таки попробует нажать на эту кнопку. Как это делается?

Для начала необходимо прописать ту функцию, которая активируется при нажатии кнопки (то есть, будет служить обработчиком событий).

def clicked():

    lbl.configure(text=»Я же просил…»)

После этого она прописывается в качестве свойства command таким образом:

btn = Button(window, text=»Не нажимать!», command=clicked)

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

Если мы запустим этот код, то увидим, что надпись изменилась на «Я же просил».

Вот, что уже умеет наша программа. Но это еще не все.

Получение ввода при помощи класса Entry (текстовое поле Tkinter)

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

Чтобы его добавить, необходимо создать объект соответствующего класса и присвоить его переменной. Для этого используется следующая строка кода.

txt = Entry(window, width=10)

Но, как вы уже поняли, этого недостаточно. Текстовое поле, равно как и любой другой объект, необходимо добавить к окну. Для этого используется функция grid. Например, так будет выглядеть поле ввода, размещенное во втором столбце (то есть, столбце, имеющем индекс 1). Соответственно, пришлось переместить кнопку немного правее.

Итоговый код получился следующим.

from tkinter import *    

def clicked():  

    lbl.configure(text=»Я же просил…»)  

window = Tk()  

window.title(«Добро пожаловать в приложение Python»)  

window.geometry(‘400×250’)  

lbl = Label(window, text=»Привет»)  

lbl.grid(column=0, row=0)  

txt = Entry(window,width=10)  

txt.grid(column=1, row=0)  

btn = Button(window, text=»Не нажимать!», command=clicked)  

btn.grid(column=2, row=0)  

window.mainloop()

Ну, соответственно, программа будет выглядеть так.

Тем не менее, в этом коде есть недостаток. Попробуйте вчитаться в него и понять, в чем он заключается. Дело в том, что при нажатии кнопки будет выдаваться старое сообщение, текст в поле не обрабатывается. Как же сделать так, чтобы приложение могло «считывать» его?

Эта задача достигается с помощью функции get. Соответственно, запишем следующий код.

def clicked():

    res = «Привет {}».format(txt.get())

    lbl.configure(text=res)

Соответственно, теперь после нажатия на кнопку программа считает с текстового поля его содержимое и отобразит текст «Привет» вместе с тем текстом, который пользователь указал на предыдущем этапе.

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

Фокус виджета ввода

А знаете, в чем еще проблема этого приложения? В том, что нужно вручную настраивать фокус ввода. То есть, нельзя сразу вводить текст после того, как программа запустится. Как же осуществить автоматическую настройку фокуса? Для этого необходимо вызвать одноименную функцию.

txt.focus()

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

Отключение виджета ввода

Отключение виджета ввода – это операция, вследствие которой он отображается серым цветом, а пользователь не имеет возможности вводить туда текст. Для того, чтобы деактивировать виджет, необходимо выставить его состояние, как «disabled». Приведем фрагмент кода, как это делается.

txt = Entry(window,width=10, state=’disabled’)

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

Добавляем виджет Combobox

Combobox – это выпадающий список. Чтобы его добавить, необходимо создать объект соответствующего класса.

from tkinter.ttk import Combobox

combo = Combobox(window)

Далее необходимо присвоить значения для поля ввода и разместить поле ввода в подходящее место окна.

combo[‘values’] = (1, 2, 3, 4, 5, «Текст»)  

combo.current(1)  # установите вариант по умолчанию  

combo.grid(column=0, row=0)  

Возможно также использование функции get, чтобы получить содержимое списка. 

Добавляем виджет Checkbutton (чекбокс)

Чтобы добавить виджет Checkbutton, необходимо добавить объект соответствующего класса.

from tkinter.ttk import Checkbutton

chk = Checkbutton(window, text=’Выбрать’)

Если передать объекту var=chk_state, то можно задать значение по умолчанию.

Установка состояния с помощью intvar()

Чтобы чекбокс сделать с поставленной галочкой или пустым, используется метод set с соответствующим индексом. Если нужно сделать так, чтобы он был активирован, то в качестве аргумента этой функции используется 1. Если же надо, чтобы он был деактивирован, то используется 0 в качестве аргумента. Перед тем, как это использовать, необходимо присвоить соответствующему чекбоксу функцию intvar().

chk_state = IntVar()

chk_state.set(0) # False

chk_state.set(1) # True

Установка состояния с помощью booleanvar()

Устанавливать состояние чекбокса можно и с помощью функции BooleanVar. В этом случае метод set устанавливается на значение True или False.

chk_state = BooleanVar()  

chk_state.set(True)  # задайте проверку состояния чекбокса 

Результат от использования BooleanVar и IntVar одинаковые. Можно использовать тот, который больше нравится.

Добавляем виджеты RadioButton

Радиокнопки – один из любимых виджетов пользователей любых программ. Выглядят они так.

Чтобы их добавить, действия аналогичные предыдущим, только присоединяется класс Radiobutton.

rad1 = Radiobutton(window, text=’Первый’, value=1)  

rad2 = Radiobutton(window, text=’Второй’, value=2)  

rad3 = Radiobutton(window, text=’Третий’, value=3)

И, аналогично предыдущим виджетам, необходимо задать позицию радиокнопок. Они должны располагаться на разных местах.

Также можно настроить радиокнопку так, чтобы она работала, как обычная кнопка. То есть, можно сделать обработчик события на нажатие. Делается это таким образом.

rad1 = Radiobutton(window,text=’Первая’, value=1, command=clicked)

def clicked():

Получаем значение Radio Button (избранная Radio Button)

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

Для этого прописывается сама переменная, а ей присваивается функция IntVar. А номер кнопки передается в качестве свойства value.

Добавляем виджет ScrolledText (текстовая область Tkinter)

Чтобы добавить большое текстовое поле, необходимо присвоить соответствующей переменной объект класса ScrolledText:

from tkinter import scrolledtext

txt = scrolledtext.ScrolledText(window,width=40,height=10)

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

Результат получится приблизительно следующим.

Настраиваем содержимое

Настройка содержимого большого текстового поля осуществляется с помощью метода insert. Смотрите, как это работает.

txt.insert(INSERT, ‘Поле для ввода текста’)

Удаление/Очистка содержимого Scrolledtext

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

txt.delete(1.0, END)

Создаем всплывающее окно с сообщением

Всплывающие окна – важные составляющие любого программного обеспечения. Они позволяют быстро проинформировать пользователя о чем-то, не изменяя содержимого основного окна. 

Они создаются таким образом.

from tkinter import messagebox

messagebox.showinfo(‘Заголовок’, ‘Текст’)

Например, можно прописать обработчик клика по кнопке, в котором предусмотрено всплывающее окно.

Показ сообщений о предупреждениях и ошибках

Также возможна настройка показа предупреждающего окна или же уведомления об ошибках. Отличается только функция, которая отображает окно.

messagebox.showwarning(‘Заголовок’, ‘Текст’)  # показывает предупреждающее сообщение

messagebox.showerror(‘Заголовок’, ‘Текст’)  # показывает сообщение об ошибке

Показ диалоговых окон с выбором варианта

Диалоговые окна бывают разными. Например, можно настроить показ такого окна, который выдавал бы варианты ответа. Если вы знаете язык, вы с легкостью догадаетесь, что означает каждая из этих команд.

res = messagebox.askquestion(‘Заголовок’, ‘Текст’)

res = messagebox.askyesno(‘Заголовок’, ‘Текст’)

res = messagebox.askyesnocancel(‘Заголовок’, ‘Текст’)

res = messagebox.askokcancel(‘Заголовок’, ‘Текст’)

res = messagebox.askretrycancel(‘Заголовок’, ‘Текст’)

Кнопка, нажатая пользователем, возвращает значение в переменную результата. Значение истина возвращается в случаях, если было нажато на «ОК», «Да», «Повторить». Во всех остальных случаях возвращается значение false.

Но есть еще функция, которая возвращает три значения – True/False/None в зависимости от выбранной кнопки. Это метод askyesnocancel.

Добавление SpinBox (Виджет спинбокс)

Spinbox – это такое поле ввода со стрелками. Добавляется он с помощью команды

spin = Spinbox(window, from_=0, to=100)

Соответственно, параметры from и to отвечают за диапазон допустимых значений.

Значение по умолчанию для Spinbox

Чтобы указать значение по умолчанию, нужно передать параметр textvariable.

spin = Spinbox(window, from_=0, to=100, width=5, textvariable=var)

Добавляем виджет Progressbar

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

from tkinter.ttk import Progressbar

bar = Progressbar(window, length=200)

Меняем цвет Progressbar

Схема изменения цвета Progressbar довольно сложная и требует отдельного рассмотрения. В целом, механика следующая: нужно создать стиль, задать цвет фона, а потом перенести его на Progressbar.

Добавляем поле загрузки файла

Поле открытия файла относится к классу filedialog. Соответственно, добавить его можно с помощью следующего кода.

from tkinter import filedialog

file = filedialog.askopenfilename()

Все эти фрагменты приводятся, как примеры. Вы подставляете свои значения, исходя из ваших задач.

Указываем тип файлов (расширение фильтра файлов)

Для этого нужно использовать параметр filetypes. При этом требуется указать расширение в tuples.

file = filedialog.askopenfilename(filetypes = ((«Text files»,»*.txt»),(«all files»,»*.*»)))

Добавление панели меню

Для работы с меню существует соответствующий класс menu

menu = Menu(window)

menu.add_command(label=’Файл’)

window.config(menu=menu)

Видим, что сначала создается меню, а потом добавляются команды. А добавление подменю осуществляется так.

menu.add_cascade(label=’Автор’, menu=new_item)

Добавляем виджет Notebook (управление вкладкой)

Также Python позволяет создавать вкладки. Последовательность действий довольно сложная, и эта тема требует отдельного рассмотрения:

  1. Создается объект класса Notebook.
  2. Создается вкладка.
  3. Вкладка добавляется в элемент управления вкладками и осуществляется запаковка с целью отображения его в окне.

Добавляем виджет на вкладку

Чтобы добавить виджет на вкладку, необходимо назначить родительское свойство той, на которую осуществляется добавление.

Добавляем интервал для виджетов (заполнение)

Для этого используются свойства padx и pady.

lbl1 = Label(tab1, text= ‘label1’, padx=5, pady=5)

Как видим, тема очень обширная, и работа с каждым действием, описанным выше, требует отдельной статьи. Тем не менее, хочется надеяться, что Вы получили общее представление о том, как работать с графическим интерфейсом в Python.

Оцените качество статьи. Нам важно ваше мнение:

Лучший фреймворк Python для создания приложения и графического интерфейса

Python был самым популярным языком программирования, используемым для объектно-ориентированного программирования. С Python вы можете запускать простые операторы без необходимости компилировать целую программу.

Конечно, Python – это интерактивное программирование, которое имеет широкий спектр возможностей для графического интерфейса пользователя GUI (помогает разработчикам создавать приложения с графическим интерфейсом простым и безопасным способом). В этой статье обсуждается лучшие фреймворки Python для создания настольного приложения и графического интерфейса.

Очень важно, чтобы у вас были базовые знания языка программирования Python, прежде чем вы сможете использовать эти среды Python.

Давайте приступим.

PyQT

PyQt – это набор инструментов для графического интерфейса пользователя. Это один из самых мощных и популярных интерфейсов Python. Это комбинация библиотеки Qt (принадлежит Nokia) и языка программирования Python, которая позволяет разработчику решать, создавать ли программу путем кодирования или создавать визуальные диалоги с использованием Qt Designer.

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

PyQt доступен для Windows, MacOSX, Linux, Android iOS и Raspberry Pi и различных версий Python от v2 до Qt v5.

Tkinter

Tkinter – самый популярный программный пакет для графического интерфейса пользователя или настольных приложений. Tkinter – это сочетание стандартного графического интерфейса Tk и Python.

TKinter поставляется с обилием ресурсов кодов и справочников, что является основной заслугой выбора его в качестве пакета. Он предоставляет разнообразные виджеты, такие как метки, кнопки и текстовые поля, используемые в приложении с графическим интерфейсом пользователя. Элемент управления Button, также называемый виджетами, используется для отображения кнопок в разрабатываемом приложении, тогда как виджет Canvas используется для рисования фигур (линий, овалов, многоугольников …) в вашем приложении.

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

Kivy

Kivy как ускоренная среда OpenGL ES 2 для создания новых пользовательских интерфейсов дает вам возможность с легкостью написать свой код один раз и запустить его на разных платформах или в операционных системах (Windows, MacOSX, Linux, Android iOS и Raspberry Pi).

Создавать приложения Kivy весело, легко и полезно, так как Kivy бесплатный и представляет собой библиотеку Python с открытым исходным кодом для создания прикладного программного обеспечения с включенным естественным пользовательским интерфейсом. У Kivy имеются двадцать виджетов в своем наборе инструментов.

WxPython

WxPython – это модуль расширения Python. Это также оболочка с открытым исходным кодом для библиотеки кроссплатформенного графического интерфейса пользователя Widget.

Как разработчик, вы можете разрабатывать традиционные приложения для Windows, Unix и Mac OS.

PyGUI

PyGUI – самый простой и легкий из всех графических интерфейсов, потому что он полностью синхронизирован с языком программирования Python. Это кроссплатформенная графическая прикладная среда для Windows, Mac OS и Unix.

Разработчик PyGUI вставляет очень мало кода между платформой GUI и приложением Python, что, в свою очередь, отображает естественный графический интерфейс платформы.

Итог

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

Понравилось то, что вы прочитали?

Подписывайтесь на нашу рассылку и получайте ежедневные обновления о новых учебниках, статьях, курсах и о многом другом! 

Просто введите ваш адрес электронной почты, чтобы подписаться.

(Без спамов; ежемесячно два письма; отписаться от рассылки можно в любое время)

Спасибо!

Подписка успешно оформлена. 🙂

Tkinter. Программирование GUI на Python. Курс

Курс «Tkinter. Программирование GUI на Python» знакомит с особенностями создания графического интерфейса пользователя средствами пакета tkinter языка программирования Python. Требует знания языка Python на уровне структурного программирования, желательно также владение азами ООП.

В курсе уделяется внимание работе с базовыми элементами интерфейса (виджетами). Изучаются основные свойства и методы кнопок, меток, текстовых полей, списков, флажков и радиокнопок, холста и меню.

Рассматриваются различные способы размещения виджетов в родительском окне: простой упаковкой, табличным разбиением и с помощью координат.

Изучаются настройки главного окна приложения, диалоговые окна, модуль tkinter.ttk.

Версия курса: май 2021 г.

Курс с примерами решений практических работ:
android-приложение,
pdf-версия.

Что такое Tkinter
Tkinter — это пакет модулей Python для создания приложений с графическим интерфейсом пользователя. Tkinter используется в Python по-умолчанию. В уроке рассматривается последовательность шагов создания GUI-программы: импорт, создание окна и виджетов, установка свойств, событий и др.

Виджеты Button, Label, Entry
В tkinter от класса Button создаются кнопки, от Label — метки, от Entry — однострочные текстовые поля для ввода. В уроке рассматривают основные свойства и методы данных виджетов.

Метод pack
В tkinter с помощью метода pack виджеты располагаются в родительском окне или фрейме. В уроке описываются опции pack, позволяющие конфигурировать виджеты относительно друг друга и относительно родителя.

Text – многострочное текстовое поле
В tkinter от класса Text создаются виджеты многострочного текстового поля. В уроке рассматриваются свойства и методы Text, настройка Scrollbar (скроллера), создание и конфигурирование тегов.

Radiobutton и Checkbutton. Переменные Tkinter
В tkinter от классов Radiobutton и Checkbutton создаются радиокнопки и флажки. В уроке описываются их основные свойства и методы, а также переменные tkinter, позволяющие связывать радиокнопки в группы и снимать данные с флажков.

Виджет Listbox
В tkinter от класса LIstbox создаются виджеты-списки, позволяющие выбирать один или множество элементов. В уроке рассматривается как заполнять список, удалять из него значения, считывать выбранные элементы.

Метод bind
В Tkinter метод bind связывает виджет, событие и функцию-обработчик: widget.bind(event, function). В уроке рассматриваются особенности передачи функций в метод bind.

События
В GUI событиями являются клики и движение мышью, нажатие клавиш на клавиатуре, изменение виджетов. События — это особые объекты Tkinter, имеющие свои атрибуты: тип, виджет, по отношению к которому произошло событие и др.

Canvas
От класса Canvas в tkinter создаются холсты, на которых можно с помощью специальных методов рисовать геометрические фигуры и размещать объекты. В уроке рассматривается создание на холсте геометрических примитивов (отрезков, многоугольников, эллипсов и др.) и текста.

Canvas. Идентификаторы, теги и анимация
Canvas — это холст, на котором можно программно выводить геометрические фигуры и другие объекты, к которым можно обращаться с помощью идентификаторов и тегов с целью изменения их свойств в процессе выполнения программы. Это позволяет в том числе делать холст интерактивным, создавать анимацию.

Окна
Окна в tkinter создаются от классов Tk и Toplevel, который используется в случае программирования многооконных приложений. Метод geometry позволяет задавать размер окна и его положение на экране. С помощью метода resizable можно запретить изменение размеров окна пользователем. title задает название окна в заголовке.

Метод grid
Grid — сетка, таблица — один из трех управляющих размещением, или менеджеров геометрии, Tkinter. Реализуется через метод grid виджетов. Опции: row, column, rowspan, columnspan, padx, pady, ipadx, ipady, sticky. Grid более удобен при разработке сложных GUI, чем Pack.

Диалоговые окна
В модулях messagebox и filedialog пакета tkinter содержатся функции вызова стандартных диалоговых окон — askyesno, askyesnocancel, showerror, showinfo, askopenfilename, asksaveasfilename и др.

Виджет Menu
В tkinter меню создаются от класса Menu. Для привязки списков используется метод add_cascade, для создания команд — add_command. Для создания всплывающего меню используется метод post.

Метод place
В tkinter метод place размещает виджеты по координатам. Возможно указание как абсолютных координат (x и y), так относительных (relx и rely). Размеры виджетов также могут быть абсолютными (width, height) и относительными (relwidth, relheight).

Модуль tkinter.ttk
В состав пакета tkinter входит модуль ttk, содержащий классы более стилизованных виджет, темы их оформления, а также классы и методы для переопределения их внешнего вида.

10 лучших графических интерфейсов Python для разработчиков | Клэр Д. Коста

Сосредоточение внимания на совершенствовании пользовательского интерфейса — это хорошо, но не менее важно, чтобы предлагал наилучший пользовательский опыт. , доставить его, не тратя на это абсурдно большое количество ресурсов, не менее важно. . Python имеет множество фреймворков для разработки графических интерфейсов пользователя, и мы собрали некоторые из самых популярных фреймворков графического интерфейса Python в нашем списке, которые перечислены ниже.

Пакет PyQt построен на основе Qt framework, , который является кроссплатформенным фреймворком, используемым для создания множества приложений для различных платформ.Пакет PyQt5 включает подробный набор привязок для Python на основе последней версии v5 каркаса приложений Qt.

Подобно фреймворку Qt5, PyQt5 также полностью кроссплатформенный . Используя возможности PyQt5, разработчики могут создавать приложения для таких платформ, как Windows, Mac, Linux, iOS, Android и другие.

Когда дело доходит до создания графического интерфейса, арсенал PyQt5 предлагает впечатляющий QtGui и модуль QtDesigner , , которые предоставляют многочисленные визуальные элементы, которые разработчик может реализовать простым перетаскиванием.Конечно, также существует возможность создания этих элементов с помощью кода, что позволяет с легкостью создавать как мелкомасштабные, так и крупномасштабные приложения. Модульность Python переходит в PyQt5 в виде расширений, предоставляя вам гораздо больше возможностей, чем просто создание графического интерфейса. Если вам нравится то, что вы видите здесь, вы можете попробовать PyQt5 с помощью команды «pip install PyQt5».

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

Tkinter встроен в текущие установщики Python для всех основных операционных систем и предлагает множество часто используемых элементов, с которыми, мы уверены, вы должны быть знакомы. Некоторые из этих визуальных элементов перечислены ниже:

● Рамка: для предоставления структуры вашему приложению

● Кнопки: используются для ввода данных от пользователя

● Контрольные кнопки: используются для выбора

● Ярлыки: для отображения текстовая информация

● Файловые диалоговые окна: для загрузки или выгрузки файлов в / из приложения

● Холст: предоставляет пространство для рисования / раскрашивания таких вещей, как графики и графики

Написано на смеси Python и Cython , Kivy — это среда графического интерфейса с открытым исходным кодом для создания некоторых из наиболее интуитивно понятных пользовательских интерфейсов, охватывающих мультисенсорные приложения , которые реализуют естественный пользовательский интерфейс (NUI) .

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

С помощью Kivy дизайнеры интерфейсов могут кодировать один раз и развертывать на нескольких платформах , в то время как встроенная поддержка OpenGL ES 2 позволяет им использовать современную и мощную графику и методы проектирования. Наиболее частое использование инфраструктуры графического интерфейса Kivy в реальном мире можно увидеть в наших приложениях для Android и iOS.Другие широко распространенные реализации фреймворка можно увидеть в пользовательских интерфейсах устройств Linux, Windows, Raspberry Pi и Mac OS . Вы можете легко добавить эту структуру в свою среду, следуя инструкциям по установке, представленным на их веб-сайте.

wxPython — это, по сути, модуль расширения Python, который действует как оболочка для API wxWidgets. wxPython позволяет разработчикам Python создавать собственные пользовательские интерфейсы , которые не добавляют дополнительных накладных расходов к приложению.Кроссплатформенные возможности wxPython позволяют развертывать его на таких платформах, как Windows, Mac OS, Linux и системы на основе Unix, практически без изменений.

Дуэт разработчиков позже выпустил Project Phoenix в качестве преемника wxPython с поддержкой Python 3 . Он был построен с нуля, чтобы предложить более чистую реализацию Python набора инструментов wxWidgets. Если вы хотите попробовать этот фреймворк, вы будете рады узнать, что последнее обновление v4.1.1 добавил его в указатель пакетов Python. С добавлением PyPI загрузка стала намного более плавной с помощью команды «pip install wxPython == 4.1.1».

Написано на C ++ Ульрихом фон Задоу, среда графического интерфейса пользователя L ibavg с открытым исходным кодом использует Python в качестве языка сценариев выбора и служит одной из лучших платформ для разработки пользовательских интерфейсов для современных сенсорных устройств . Обработка графических элементов, таких как декодирование видео, визуальные эффекты и композитинг, осуществляется с помощью аппаратного ускорения, достигаемого с помощью шейдеров OpenGL и графического процессора, что обеспечивает плавные и насыщенные графикой визуальные эффекты.

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

Будучи построенным на C ++ для обеспечения невероятно быстрого времени выполнения, разработчики, которые хотят получить от своего приложения абсолютную максимальную производительность, не будут разочарованы libavg.Вы можете найти инструкции по установке на странице загрузок их веб-сайта.

Разве название этого фреймворка не является явным признаком того, для чего он предназначен? Возвращаясь к теме, те, кто только начинает заниматься разработкой приложений Python, могут поначалу найти множество фреймворков Python GUI устрашающими. Майк Б. создал PySimpleGUI в 2018 году. облегчают новичкам Python в разработке графического интерфейса , не тратя слишком много времени на изучение тонкостей более продвинутых доступных вариантов разработки графического интерфейса.

PySimpleGUI использует 4 широко распространенных графических интерфейса Python, включая Qt, Tkinter, WxPython и Remi , и снижает их сложность на несколько ступеней за счет реализации большей части стандартного кода. Результат?

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

Инфраструктура графического интерфейса пользователя PyForms — это программный уровень Python, лежащий в основе широко известной Windows Forms , которая позволяет разработчикам создавать около удивительных и очень интерактивных пользовательских интерфейсов. Кросс-платформенные возможности PyForms облегчают разработчикам создание приложений для нескольких платформ с небольшими изменениями кода, устраняя ненужные замедления. PyForms предоставляет экземпляры нескольких популярных графических библиотек, таких как PyQt, OpenGL, , , и других, чтобы помочь разработчикам создавать пользовательские интерфейсы для своих приложений.

Библиотека PyForms разделена на 3 различных раздела, включая PyForms-GUI, PyForms-Web и PyForms-Terminal. Каждый из этих уровней позволяет запускать приложение PyForms в Интернете, в терминале и в графическом интерфейсе Windows. Ориентируясь на модульность, PyForms идеально подходит для быстрого создания прототипов, а также может быстро выполнить обслуживание на более поздних этапах приложения. Установка выполняется с помощью команды «pip install pyforms», которая добавляет все три библиотеки, или, если вы хотите использовать библиотеки по отдельности, это тоже возможно.

Помните фреймворк под названием wxPython, который мы обсуждали несколько указателей назад? Подобно тому, как wxPython был оболочкой для набора инструментов графического интерфейса пользователя wxWidgets, среда графического интерфейса пользователя Wax является более удобной оболочкой для wxPython для разработчиков. Как и другие популярные фреймворки, воск также реализован как модуль расширения для Python. А для тех, кому интересно, да, воск поддерживает создание кроссплатформенных приложений.

Идея воска состоит в том, чтобы предложить разработчикам приложений более простой доступ к элементам и объектам Python для создания графических интерфейсов пользователя, удалив низкоуровневые аспекты wxPython.Поскольку базовая платформа wxWindows сама по себе чрезвычайно эффективна, структура графического интерфейса пользователя Wax работает на том же уровне эффективности и скорости, что и встроенные виджеты, предоставляемые платформой.

PySide2 — это , созданный той же компанией , которая предоставила нам широко популярный фреймворк для разработки приложений Qt. Присмотревшись, вы встретите термин «Qt для проекта Python», , который является не чем иным, как задачей переноса PySide для поддержки Qt5, тогда как сама структура теперь называется PySide2.

Теперь он называется официальным кроссплатформенным модулем Python для проекта Qt for Python. Проект предоставляет разработчикам Python доступ к проверенному набору инструментов и библиотек для быстрого и гибкого создания потрясающих инструментов пользовательского интерфейса , которые может предложить Qt5 и выше.

PySide2 также предлагает мощную поддержку сообщества для разработчиков, которые ищут его. Раздел документации PySide2 разделен на такие области, как учебные пособия , видеоруководства, примеры, документация по API, и др., Чтобы широко охватить множество тем, включенных в структуру. AMD Radeon Control Software , развлекательные решения для Mercedes Mini Cooper и TomTom Navigation Systems — это лишь некоторые из высокотехнологичных и современных примеров, работающих на Qt.

Проект Python GUI , или более широко известный фреймворк PyGUI — это простой API, который позволяет разработчикам создавать пользовательские интерфейсы с использованием собственных элементов для приложений Python. Будучи довольно легким API , среда PyGUI добавляет очень мало дополнительного кода между приложением Python и целевой платформой.PyGUI в настоящее время поддерживает создание приложений для систем на базе Unix, компьютеров Windows и устройств Mac OS.

Чтобы сделать разработку приложений еще проще для разработчиков, документация для всей библиотеки написана на Python, что избавляет от необходимости обращаться к другим библиотекам графического интерфейса. PyGUI доступен для Python 2 и 3, и да, он поддерживает расширения, которые позволяют использовать OpenGL и GTK.

Какой GUI Framework лучше всего подходит для программистов Python?

10 – PyGUI

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

Преимущества:

  • Вся документация написана на Python
  • Доступен в Python 2 и 3
  • Поддержка других расширений Python, таких как OpenGL и GTK
  • Кроссплатформенный
  • Открытый исходный код
  • Простая установка через трубку

Ограничения:

  • Предварительно не установлен с Python

9 воск

Wax — это оболочка для wxPython (см. № 3 в этом списке).Он предлагает те же функции, что и wxPython, но гораздо более удобен для пользователя. Я также включил пример того, как использовать воск, внизу этого поста.

Преимущества:

  • Открытый исходный код
  • Кроссплатформенный
  • Простота использования

Ограничения:

  • Предварительно не установлен с Python

8 – Пиформ

Pyforms-GUI — это программный уровень, который является частью основной библиотеки Pyforms, которая также включает PyForms-Web и PyForms-Terminal.Pyforms — это Python-реализация Windows Forms, которая позволяет разрабатывать интерактивные интерфейсы для режима Windows GUI, веб-режима и режима терминала.

Преимущества:

  • Открытый исходный код
  • Кросс-платформенный
  • Он имеет минимальный API, поэтому интерфейсы можно легко определить с помощью всего нескольких строк кода Python
  • Вы также можете кодировать расширенные функции с минимальными усилиями
  • Код организован в модули, готовые к повторному использованию другими приложениями
  • Упрощает обслуживание приложений
  • Быстрое и простое прототипирование
  • Низкая кривая обучения
  • Простая установка с трубкой

Ограничения:

  • Доступно только для Python3 и не предустановлено
  • Не подходит для обработки большого количества полей данных в форме
  • Отображает значения атрибутов записи, но не поддерживает функции метода вызова просматриваемых объектов
  • Не может отображать динамически вычисляемые атрибуты

7 – PySimpleGUI

PySimpleGUI был создан еще в 2008 году, чтобы сделать разработку графического интерфейса на Python более доступной.Что в имени? Что ж, как следует из названия, это среда графического интерфейса пользователя, специально написанная для абсолютных новичков в разработке графического интерфейса пользователя Python.

Преимущества:

  • Открытый исходный код
  • Кросс-платформенный
  • Питон 3
  • Простота установки через трубку
  • Легко учиться
  • Доступно множество документации и руководств, что делает его отличным способом начать изучение дизайна графического интерфейса

Ограничения:

  • На самом деле следует использовать только для простой разработки графического интерфейса
  • Отсутствует конструктор форм

6 – Libavg

Libavg — отличная среда графического интерфейса Python, специально предназначенная для создания сенсорных интерфейсов.Он построен на C ++, что обеспечивает быстрое выполнение, необходимое при работе с сенсорными интерфейсами.

Преимущества:

  • Открытый исходный код
  • Кросс-платформенный
  • Поддерживает общие драйверы для сенсорных экранов
  • Широкий спектр функций, включая поддержку камеры и анимации, а также эффекты графического процессора и выравнивание текста
  • Предлагает механизм компоновки экрана для различных методов управления визуализацией
  • Поддерживает как Python 2.7 и 3

Ограничения:

  • Предварительно не установлен с Python

5 – Kivy

Kivy — это кроссплатформенная библиотека Python с открытым исходным кодом (на основе Python и Cython), предназначенная для быстрой разработки приложений со сложными пользовательскими интерфейсами, таких как приложения с несколькими касаниями. Kivy работает на Linux, Windows, OS X, Android, iOS и Raspberry Pi, и вы можете запускать один и тот же код на всех этих платформах.

Комбинация «кодировать один раз, запускать на нескольких платформах» плюс использование мощных графических методов (встроенная поддержка OpenGL ES 2) делает эту структуру подходящей для дизайнеров приложений iOS и Android.

Преимущества:

  • Открытый исходный код
  • Лицензия MIT
  • Встроенные виджеты
  • Кросс-платформенный

Ограничения:

  • Предварительно не установлен с Python

4 – PySide2

PySide2 — это Qt для Python, предлагающий официальные привязки Python для Qt. Это позволяет использовать Qt API в приложениях Python, а также инструмент генератора привязок (Shiboken2) для предоставления проектов C ++ в Python.

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

Преимущества:

  • Простая установка через трубку
  • Поддерживает как Python 3, так и Python 2.7
  • Кросс-платформенный
  • Обширная поддержка сообщества и документация
  • Используется известными компаниями, такими как TomTom и Mercedes

Ограничения:

  • Предварительно не установлен с Python
  • Лицензия LGPL, что делает сомнительным использование в коммерческих приложениях, так как вам нужно будет сделать свой исходный код доступным
  • Python 2.7 сборок доступны только для 64-битных версий MacOS и Linux. Поддержка 32-разрядной версии Windows предоставляется только на Python 2.

3 – wxPython

wxPython — это кроссплатформенный набор инструментов графического интерфейса, который вы можете использовать для создания надежных, функциональных графических интерфейсов простым и легким способом. Реализация представляет собой набор модулей расширения Python, которые охватывают компоненты графического интерфейса кроссплатформенной библиотеки wxWidgets, написанной на C ++.

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

Преимущества:

  • Открытый исходный код
  • Кросс-платформенный
  • поддерживает Python 2.7 и 3
  • Простота использования
  • Плавный монтаж с трубкой

Ограничения:

  • Не является частью предварительно установленного Python на MacOS

2 – Tkinter

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

Преимущества:

  • Если вы используете последнюю версию Python, скорее всего, Tkinter уже установлен
  • Tkinter предлагает обширную коллекцию хорошо известных виджетов, включая все наиболее распространенные, такие как кнопки, метки, флажки и т. Д.
  • Просто добавить код в каждый виджет

Ограничения:

  • Базовые виджеты Tkinter хороши, но вы должны убедиться, что ваша версия Tkinter также поддерживает расширенный набор виджетов Ttk

1 – PyQt5

PyQt5 — очень хорошо известная среда графического интерфейса пользователя, используемая как программистами Python, так и разработчиками пользовательского интерфейса.Один из его компонентов, пакет PyQt, построен на платформе Qt, которая является ведущим кроссплатформенным инструментом проектирования графического интерфейса практически для любого типа приложений. Пакет PyQt5 имеет подробный набор привязок для Python на основе последней версии (v5) инфраструктуры приложений Qt. Он также обеспечивает поддержку SQL для подключения к базам данных.

Создание графического интерфейса пользователя удивительно просто с модулем QtGUI и QtDesigner, предоставляющим множество визуальных элементов, которые можно реализовать простым перетаскиванием виджетов.

Преимущества:

  • Функция перетаскивания для реализации визуальных элементов
  • Добавить код к визуальным элементам, позволяющий создавать небольшие и крупномасштабные приложения
  • Кросс-платформенная поддержка Windows, Mac, Android и Raspberry Pi
  • Простая установка с трубкой

Ограничения:

  • Не бесплатно! PyQt5 требует, чтобы вы приобрели коммерческую лицензию.
  • Предварительно не установлен с Python
  • Python 3 поддерживает только

Выводы: какая среда графического интерфейса Python лучше всего?

Короче говоря: все зависит от ваших потребностей! Например:

  • Для абсолютных новичков: Я бы рекомендовал начать с PySimpleGUI.Эта структура проста в использовании и содержит множество документации, которая поможет вам разобраться в проектировании и разработке графического интерфейса пользователя с помощью Python.
  • Если PySimpleGUI кажется вам слишком ограничивающим: Попробуйте что-нибудь более полное, например wxPython. Он предлагает лучший набор элементов управления в простой в использовании структуре, хотя его оболочка (Wax) более удобна для пользователя. В любом случае можно сделать хороший шаг вперед по сравнению с PySimpleGUI — выбор за вами.
  • Программисты, ориентированные на дизайн: Заинтересованы в дизайне графического интерфейса пользователя? Попробуйте PyQt5, Tkinter или PySide 2.Все они предоставят вам удивительно гибкие элементы управления, чтобы вы могли создать пользовательский интерфейс своей мечты. Однако имейте в виду, что PyQt5 и PySide 2 потребуют от вас покупки лицензии.
  • Интерфейсы сенсорного экрана: Нужен пользовательский интерфейс для приложения с сенсорным экраном? Киви и Либавг — ваши лучшие ставки. Если для вас важно быстрое время выполнения, я бы порекомендовал Libavg. С другой стороны, если визуальный дизайн имеет первостепенное значение, придерживайтесь Киви.
  • Пользовательский интерфейс на основе форм: Если ваше приложение ориентировано на формы, Pyforms — хороший выбор.В противном случае сложно рекомендовать Pyforms.
  • Python 2: Если вы все еще работаете с Python 2, вы можете попробовать несколько графических интерфейсов, включая PyGUI, PySide 2 и wxPython. Однако вы должны знать, что Python 2 больше не поддерживается официально Python Software Foundation или сообществом Python. Если вам требуется поддержка Python 2, ознакомьтесь с нашей расширенной поддержкой.

Для меня лучший UI-фреймворк — это Wax, удобная для пользователя версия wxPython.Он обладает всеми характеристиками эффективного фреймворка Python для разработки графического интерфейса пользователя без множества наворотов, связанных с более сложными решениями. Однако, если вам нужна продвинутая графика и элементы дизайна, вам, вероятно, следует попробовать PyQt5, Tkinter или PySide 2.

Готовы к восковой эпиляции? Вот простой скрипт Python datepicker, созданный с помощью Wax:

 из импорта воска *

из Wax.tools.datepicker импорт DatePicker

дата и время импорта

время импорта


класс MainFrame (VerticalFrame):

def Body (self):

p1 = HorizontalPanel (самостоятельно)

dp1 = DatePicker (p1)

p1.AddComponent (dp1)

p1.AddSpace (10)


b1 = Кнопка (p1, «Добавить 1 день», event = self.AddOneDay)

p1.AddComponent (b1)
 

p1.Pack ()

self.AddComponent (p1, expand = 'h', border = 4)
 

p2 = HorizontalPanel (самостоятельно)

dp2 = DatePicker (p2 ,, show_century = 1)

p2.AddComponent (dp2)

p2.AddSpace (10)



b2 = Кнопка (p2, «Вчера», event = self.SetToYesterday)

 p2.AddComponent (b2)


p2.Pack ()

self.AddComponent (p2, expand = 'h', border = 4)
 

себя.Пакет()

self.BackgroundColor = p1.BackgroundColor

self.dp1 = dp1

self.dp2 = dp2


# ограничить диапазон dp2 текущим годом

thisyear = time.localtime (time.time ()) [0]

dp2.SetRange ((в этом году, 1, 1), (в этом году, 12, 31))


def AddOneDay (себя, событие):

self.dp1.Inc ()

print "Дата установлена ​​на:", self.dp1.Value


def SetToYesterday (себя, событие):

сейчас = время.localtime (время.время ())

self.dp2.Value = now [: 3] # кортеж: (год, месяц, день)

себя.dp2.Dec ()


app = Application (MainFrame, title = 'datepicker-1')

app.Run ()
 

Чтобы вам было проще опробовать фреймворки GUI, установите нашу среду выполнения GUI Frameworks для Windows или Linux, которая содержит версию Python и большинство фреймворков графического интерфейса, описанных в этом посте.

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

Рекомендуемые чтения

10 лучших фреймворков Python для веб-разработки

Лучшие фреймворки Python для мобильной разработки и способы их использования

Python GUI — tkinter — GeeksforGeeks

Python предлагает несколько вариантов разработки GUI (графического интерфейса пользователя). Из всех методов графического интерфейса наиболее часто используется tkinter. Это стандартный интерфейс Python для набора инструментов Tk GUI, поставляемого с Python.Python с tkinter — это самый быстрый и простой способ создания приложений с графическим интерфейсом. Создание графического интерфейса с использованием tkinter — простая задача.
Чтобы создать приложение tkinter:

  1. Импорт модуля — tkinter
  2. Создайте главное окно (контейнер)
  3. Добавьте любое количество виджетов в главное окно
  4. Примените триггер события к виджетам.

Импорт tkinter аналогичен импорту любого другого модуля в коде Python. Обратите внимание, что имя модуля в Python 2.x — это «Tkinter», а в Python 3.x — «tkinter».

 импортный tkinter
 

Используются два основных метода, которые пользователь должен помнить при создании приложения Python с графическим интерфейсом пользователя.

  1. Tk (screenName = None, baseName = None, className = ‘Tk’, useTk = 1): Для создания главного окна tkinter предлагает метод ‘Tk (screenName = None, baseName = None, className =’ Tk ‘, используйте Tk = 1)’. Чтобы изменить имя окна, вы можете изменить className на желаемое.Основной код, используемый для создания главного окна приложения:
     m = tkinter.Tk (), где m - имя объекта главного окна 
  2. mainloop (): Существует метод, известный под названием mainloop () используется, когда ваше приложение готово к запуску. mainloop () — это бесконечный цикл, используемый для запуска приложения, ожидания события и обработки события, пока окно не закрыто.
     м. Магистраль () 

    импорт tkinter

    м = tkinter.Tk ()

    m.mainloop ()

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

  1. Метод pack (): Он организует виджеты в блоки перед размещением в родительском виджете.
  2. Метод grid (): Он организует виджеты в сетке (структура, подобная таблице) перед размещением в родительском виджете.
  3. Метод place (): Он организует виджеты, помещая их на определенные позиции, указанные программистом.

Есть ряд виджетов, которые вы можете поместить в свое приложение tkinter. Некоторые из основных виджетов описаны ниже:

  1. Кнопка : этот виджет используется для добавления кнопки в ваше приложение.
    Общий синтаксис:
     w = Кнопка (master, option = value) 

    master — параметр, используемый для представления родительского окна.
    Существует ряд опций, которые используются для изменения формата кнопок. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • activebackground : для установки цвета фона, когда кнопка находится под курсором.
    • activeforeground : для установки цвета переднего плана, когда кнопка находится под курсором.
    • bg : для установки нормального цвета фона.
    • команда : для вызова функции.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на кнопку.
    • ширина : установить ширину кнопки.
    • высота : для установки высоты кнопки.

    импорт tkinter as tk

    r = tk.Tk ()

    r.title (

    23 » кнопка = тк.Кнопка (r, текст = 'Stop' , ширина = 25 , команда = r. Уничтожение)

    кнопка. Упаковка ()

    37

    .mainloop ()

    Вывод:

  2. Холст: Он используется для рисования изображений и других сложных макетов, таких как графика, текст и виджеты.
    Общий синтаксис:
     w = Canvas (master, option = value)
    master - это параметр, используемый для представления родительского окна.

    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • bd : для установки ширины границы в пикселях.
    • bg : для установки обычного цвета фона.
    • курсор : для установки курсора, используемого на холсте.
    • highlightcolor : установить цвет, отображаемый в выделении фокуса.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    из tkinter import *

    master = Tk ()

    w 906 40 , высота = 60 )

    w.pack ()

    холст_высота = 20

    07

    07 ширина y = int (canvas_height / 2 )

    w.create_line ( 0 , y, canvas_width, y)

    mainloop ()

    Выход:

  3. CheckButton: Для выбора любого количества вариантов с помощью отображения пользователю как кнопки переключения. Общий синтаксис:
     w = CheckButton (master, option = value) 

    Существует ряд параметров, которые используются для изменения формата этого виджета. Количество опций можно передать как параметры, разделенные запятыми.Некоторые из них перечислены ниже.

    • Заголовок : для установки заголовка виджета.
    • activebackground : для установки цвета фона, когда виджет находится под курсором.
    • activeforeground : установить цвет переднего плана, когда виджет находится под курсором.
    • bg : чтобы установить нормальный фон Стеганография

      Break

      Секретный код:

      Прикрепите файл: nd color.

    • команда : для вызова функции.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на виджет.

    из tkinter импорт *

    мастер = Tk ()

    мастер, текст = 'мужской' , переменная = var1).сетка (строка = 0 , липкий = W)

    var2 = IntVar ()

    Checkbutton (master, text female , переменная = var2) .grid (строка = 1 , липкий = W)

    mainloop ()

    Выход

  4. Запись: Используется для ввода однострочного текста от пользователя.. Для ввода многострочного текста используется виджет «Текст».
    Общий синтаксис:
     w = Entry (master, option = value)
     

    master - это параметр, используемый для представления родительского окна.
    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • bd : для установки ширины границы в пикселях.
    • bg : для установки обычного цвета фона.
    • курсор : для установки используемого курсора.
    • команда : для вызова функции.
    • highlightcolor : установить цвет, отображаемый в выделении фокуса.
    • ширина : установить ширину кнопки.
    • высота : для установки высоты кнопки.

    из tkinter импорт *

    мастер = Tk ()

    Имя ).сетка (строка = 0 )

    Метка (главный, текст = 'Фамилия' ). сетка (строка = 1 7 9624 237 e1 = Запись (главная)

    e2 = Запись (главная)

    e1.grid (строка = 0 , столбец 1 906 )

    e2.сетка (строка = 1 , столбец = 1 )

    mainloop ()

    Выход:

  5. Кадр 9019:

  6. контейнер для виджетов. Он используется для группировки и организации виджетов. Общий синтаксис:

     w = Frame (master, option = value)
    master - это параметр, используемый для представления родительского окна. 

    Существует ряд опций, которые используются для изменения формата виджета.Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • highlightcolor : для установки цвета выделения фокуса, когда виджет должен быть сфокусирован.
    • bd : для установки ширины границы в пикселях.
    • bg : для установки обычного цвета фона.
    • курсор : для установки используемого курсора.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    из tkinter импорт *

    корень = Tk ()

    рама.упаковка ()

    нижняя рама = рама (корневая)

    нижняя рама.упаковка (боковая = НИЖНЯЯ)

    = красный рамка, текст = 'красный' , fg = 'красный' )

    красная кнопка.пакет (сторона = ЛЕВАЯ)

    зеленая кнопка = Кнопка (рамка, текст = 'коричневый' , fg = 9024 9 'коричневый 7')

    greenbutton.pack (сторона = LEFT)

    bluebutton = Button (frame, text = 'Blue' , fg = синий )

    синяя кнопка.упаковка (сторона = СЛЕВА)

    черная кнопка = Кнопка (нижняя рамка, текст = 'черный' , fg = 9'6 черный

    blackbutton.pack (сторона = НИЖНИЙ)

    root.mainloop ()

    Выход:

  7. Ярлык : где можно разместить ярлык любой текст или изображение, которые могут быть обновлены в любое время согласно коду.
    Общий синтаксис:
     w = Label (master, option = value)
    master - это параметр, используемый для представления родительского окна. 

    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • bg : для установки нормального цвета фона.
    • bg , чтобы установить нормальный цвет фона.
    • команда : для вызова функции.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на кнопку.
    • ширина : установить ширину кнопки.
    • высота ”, чтобы установить высоту кнопки.

    из tkinter импорт *

    корень = Tk ()

    w 906 'GeeksForGeeks.орг! ' )

    w.pack ()

    root.mainloop ()

    Вывод:

  8. Listbox : он предлагает пользователю список, из которого принять любое количество вариантов.
    Общий синтаксис:
     w = Listbox (master, option = value)
    master - это параметр, используемый для представления родительского окна. 

    Существует ряд опций, которые используются для изменения формата виджета.Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • highlightcolor : для установки цвета выделения фокуса, когда виджет должен быть сфокусирован.
    • bg : для установки нормального цвета фона.
    • bd : для установки ширины границы в пикселях.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на виджет.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    из tkinter импорт *

    верхняя часть = Tk ()

    фунт. Вставка ( 1 , 'Python' )

    фунт. Вставка ( 2 , 'Java' 9237 Lb) вставка ( 3 , 'C ++' )

    фунт вставка ( 4 , 'любой другой' )

    фунт (упаковка)

    фунт

    top.mainloop ()

    Вывод:

  9. MenuButton : это часть меню сверху вниз, которая все время остается в окне. Каждая кнопка меню имеет свои собственные функции. Общий синтаксис:
     w = MenuButton (master, option = value)
    master - это параметр, используемый для представления родительского окна.

    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • activebackground : для установки фона при наведении указателя мыши на виджет.
    • activeforeground : для установки переднего плана при наведении указателя мыши на виджет.
    • bg : для установки нормального цвета фона.
    • bd : установить размер границы вокруг индикатора.
    • курсор : для отображения курсора при наведении указателя мыши на кнопку меню.
    • изображение : для установки изображения на виджет.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.
    • highlightcolor : для установки цвета выделения фокуса, когда виджет должен быть сфокусирован.

    от tkinter импорт *

    верх = Tkton () Tkton () = "GfG")

    мб.grid ()

    mb.menu = Меню (mb, отрывное = 0 )

    mb ["меню"] = 000u

    cVar = IntVar ()

    aVar = IntVar ()

    mb.menu.add_checkbutton (label сВар)

    мб.menu.add_checkbutton (метка = 'About' , переменная = aVar)

    mb.pack ()

    top.mainloop () :

  10. Меню : используется для создания всех видов меню, используемых приложением.
    Общий синтаксис:
     w = Меню (главное, опция = значение)
    master - это параметр, используемый для представления родительского окна.

    Существует ряд опций, которые используются для изменения формата этого виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • заголовок : для установки заголовка виджета.
    • activebackground : для установки цвета фона, когда виджет находится под курсором.
    • activeforeground : установить цвет переднего плана, когда виджет находится под курсором.
    • bg : для установки нормального цвета фона.
    • команда : для вызова функции.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на виджет.

    из tkinter импорт *

    корень = Tk () меню

    корень.config (меню = меню)

    filemenu = Меню (меню)

    menu.add_cascade (метка = 'Файл' 6 , меню filemenu)

    filemenu.add_command (метка = 'New' )

    filemenu.add_command (метка = 'Открыть ... .add_separator ()

    filemenu.add_command (метка = 'Exit' , command = root.quit)

    меню helpmenu 9623 = = menu.add_cascade (метка = «Справка» , меню = helpmenu)

    helpmenu.add_command (метка = 906 923 906 ()

    Вывод:

  11. Сообщение : относится к многострочному и нередактируемому тексту.Он работает так же, как и Label.
    Общий синтаксис:
     w = Сообщение (master, option = value)
    master - это параметр, используемый для представления родительского окна.
     

    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • bd : для установки границы вокруг индикатора.
    • bg : для установки нормального цвета фона.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на виджет.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    из tkinter импорт *

    основной = Tk ()

    наше сообщение 906 messageVar = Сообщение (основное, текст = ourMessage)

    messageVar.config (bg = 'lightgreen' )

    messageVar.pack ()

    main.mainloop ()

    Выход:

  12. 19 Radio

    используется, чтобы предложить пользователю возможность выбора из нескольких вариантов. Он предлагает пользователю несколько вариантов, и пользователь должен выбрать один вариант.
    Общий синтаксис:

     w = RadioButton (master, option = value)
     

    Существует ряд опций, которые используются для изменения формата этого виджета.Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • activebackground : для установки цвета фона, когда виджет находится под курсором.
    • activeforeground : установить цвет переднего плана, когда виджет находится под курсором.
    • bg : для установки нормального цвета фона.
    • команда : для вызова функции.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на виджет.
    • ширина : для установки ширины метки в символах.
    • высота : для установки высоты метки в символах.

    из tkinter импорт *

    корень = Tk ()

    v 906 корень, текст = 'GfG' , переменная = v, значение = 1 ).pack (якорь = W)

    Radiobutton (root, text = 'MIT' , переменная = v, значение = 2) .pack (привязка = Вт)

    mainloop ()

    Выход:

  13. Масштаб: Используется для создания графического ползунка, который позволяет выбирать любое значение из .Общий синтаксис:
     w = Scale (master, option = value)
    master - это параметр, используемый для представления родительского окна.
     

    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • курсор : для изменения шаблона курсора, когда мышь находится над виджетом.
    • activebackground : для установки фона виджета при наведении указателя мыши на виджет.
    • bg : для установки нормального цвета фона.
    • orient : Установите ГОРИЗОНТАЛЬНЫЙ или ВЕРТИКАЛЬНЫЙ в соответствии с требованиями.
    • from_ : для установки значения одного конца диапазона шкалы.
    • до : для установки значения на другом конце диапазона шкалы.
    • изображение : для установки изображения на виджет.
    • ширина : установить ширину виджета.

    из tkinter импорт *

    мастер = Tk ()

    _ 906 906 0 , до = 42 )

    w.pack ()

    w = Масштаб (главный, from_ = 0 , до = 200 , ориентировать = .pack ()

    mainloop ()

    Вывод:

  14. Полоса прокрутки : относится к контроллеру слайдов, который будет использоваться для реализации перечисленных виджетов.
    Общий синтаксис:
     w = полоса прокрутки (главная, опция = значение)
    master - это параметр, используемый для представления родительского окна.

    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • ширина : установить ширину виджета.
    • activebackground : для установки фона при наведении указателя мыши на виджет.
    • bg : для установки нормального цвета фона.
    • bd : установить размер границы вокруг индикатора.
    • курсор : для отображения курсора при наведении указателя мыши на кнопку меню.

    из tkinter импорт *

    корень = Tk ()

    полоса прокрутки полоса прокрутки полоса прокрутки .pack (сторона = ВПРАВО, заполнить = Y)

    mylist = Список (корень, yscrollcommand = полоса прокрутки. набор )

    для строка в диапазоне ( 100 ):

    mylist.624 'строка + str (строка))

    mylist.pack (сторона = LEFT, заполнить = BOTH)

    command fig мой список.yview)

    mainloop ()

    Вывод:

  15. Текст: Чтобы отредактировать многострочный текст и отформатировать его так, как он должен отображаться.
    Общий синтаксис:
     w = Text (master, option = value)
     

    Существует ряд опций, которые используются для изменения формата текста. Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • highlightcolor : для установки цвета выделения фокуса, когда виджет должен быть сфокусирован.
    • insertbackground : для установки фона виджета.
    • bg : для установки нормального цвета фона.
    • шрифт : для установки шрифта на метке кнопки.
    • изображение : для установки изображения на виджет.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    от tkinter импорт *

    корень = Tk ()

    906 906 906 906 2 , ширина = 30 )

    T.pack ()

    T.insert (END, 'GeeksforGeeks \ nBEST WEBSITE \ n' )

    mainloop ()

    Выход:

    Вверх Этот виджет напрямую управляется оконным менеджером. Для работы не требуется никакого родительского окна. Общий синтаксис:

     w = TopLevel (master, option = value)
     

    Существует ряд опций, которые используются для изменения формата виджета.Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • bg : для установки нормального цвета фона.
    • bd : установить размер границы вокруг индикатора.
    • курсор : для отображения курсора при наведении указателя мыши на кнопку меню.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    из tkinter импорт *

    корень = Tk ()

    root.title ( 'GfG' )

    top = Toplevel ()

    top.title ( 'Python' )

    42 906

    Вывод:

  16. SpinBox: Это запись виджета Entry. Здесь значение можно ввести, выбрав фиксированное значение чисел. Общий синтаксис:
     w = SpinBox (master, option = value)
     

    Существует ряд опций, которые используются для изменения формата виджета.Количество опций можно передать как параметры, разделенные запятыми. Некоторые из них перечислены ниже.

    • bg : для установки нормального цвета фона.
    • bd : установить размер границы вокруг индикатора.
    • курсор : для отображения курсора при наведении указателя мыши на кнопку меню.
    • команда : для вызова функции.
    • ширина : установить ширину виджета.
    • activebackground : для установки фона при наведении указателя мыши на виджет.
    • disabledbackground : Для отключения фона при наведении указателя мыши на виджет.
    • from_ : для установки значения одного конца диапазона.
    • до : для установки значения на другом конце диапазона.

    из tkinter импорт *

    мастер = Tk ()

    w 906 906 906 0 , до = 10 )

    w.pack ()

    mainloop ()

    Вывод:

  17. PannedWindow Это виджет контейнера, который используется для обработки количества расположенных в нем панелей. Общий синтаксис:
     w = PannedWindow (master, option = value)
     

    master - это параметр, используемый для представления родительского окна.
    Существует ряд опций, которые используются для изменения формата виджета. Количество опций можно передать как параметры, разделенные запятыми.Некоторые из них перечислены ниже.

    • bg : для установки нормального цвета фона.
    • bd : установить размер границы вокруг индикатора.
    • курсор : для отображения курсора при наведении указателя мыши на кнопку меню.
    • ширина : установить ширину виджета.
    • высота : установить высоту виджета.

    из tkinter импорт *

    m1 = PanedWindow ()

    m1.упаковать (заполнить = ОБЕИ, развернуть = 1 )

    слева = Вход (m1, bd = 5 ) добавить (слева)

    м2 = PanedWindow (m1, ориентировать = ВЕРТИКАЛЬНО)

    m1.add (m2)

    по верху = = = = = orient = ГОРИЗОНТАЛЬНО)

    м2.add (вверху)

    mainloop ()

    Вывод:

  18. Автор статьи Rishabh Bansal . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на [email protected]. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

    Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

    Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.

    Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS . И чтобы начать свое путешествие по машинному обучению, присоединяйтесь к Машинное обучение - курс базового уровня

    8 Python GUI Framework для разработчиков

    Графические интерфейсы пользователя

    делают взаимодействие человека с машиной более простым и интуитивно понятным.Это играет решающую роль в процессе перехода мира к цифровизации. Python - один из самых любимых языков разработчиков из-за большого количества библиотек и фреймворков. В этой статье мы перечисляем 8 фреймворков Python GUI на 2019 год.

    (Список в алфавитном порядке)

      Зарегистрируйтесь БЕСПЛАТНО Семинар по инженерии данных >>  

    1 | Киви

    Kivy - это библиотека Python с открытым исходным кодом для быстрой разработки приложений, в которой используются инновационные пользовательские интерфейсы, такие как приложения с поддержкой мультитач.Эта платформа является кроссплатформенной и работает на Linux, Windows, OS X, Android, iOS и Raspberry Pi. Графический движок построен с использованием модема и быстрого графического конвейера.

    2 | Libavg

    Libavg - это платформа высокого уровня с открытым исходным кодом для медиа-ориентированных приложений. Он использует Python в качестве языка сценариев, написан на высокоскоростном C ++ и использует современный OpenGL для вывода на дисплей. Эта структура отлично подходит для разработки современных сенсорных интерфейсов пользователя и поддерживает все основные модели сенсорных драйверов, включая Windows Touch, Linux XInput и TUIO.Libavg имеет ряд функций, таких как поддержка полного набора элементов отображения, которые необходимы современным приложениям с интенсивной графикой, механизм компоновки поддерживает одновременно тысячи элементов отображения на экране, а также вывод видео с аппаратным ускорением и многое другое.

    3 | PyQT

    PyQt представляет собой набор привязок Python v2 и v3 для платформы приложений Qt компании Qt и работает на всех платформах, поддерживаемых Qt, включая Windows, OS X, Linux, iOS и Android. Эта структура объединяет платформу кроссплатформенных приложений Qt C ++ и кроссплатформенный интерпретируемый язык Python.Qt - это кроссплатформенная среда разработки приложений для настольных, встроенных и мобильных устройств. Qt включает абстракции сетевых сокетов, потоков, Unicode, регулярных выражений, баз данных SQL, SVG, OpenGL, XML, полнофункциональный веб-браузер, справочную систему, мультимедийную структуру, а также богатую коллекцию виджетов графического интерфейса.

    4 | PySimpleGUI

    PySimpleGUI - это среда графического интерфейса пользователя для Python, которая поддерживает версию Python 3. С помощью этого фреймворка легко создавать пользовательские графические интерфейсы.В настоящее время существует 4 активно разрабатываемых и поддерживаемых «порта» этого фреймворка: tkinter, который полностью завершен, Qt с использованием Pyside2, который находится на стадии альфа, WxPython, который находится на стадии разработки, и Remi (поддержка веб-браузера), который также находится на стадии разработки. стадия разработки.

    5 | Пиформ

    Pyforms - это кросс-платформенный фреймворк для разработки приложений с графическим интерфейсом. Фреймворк предлагает уровень Python для форм рабочего стола, основанный на PyQt, OpenGL и других библиотеках, позволяющий приложениям запускаться в графическом интерфейсе рабочего стола, в Интернете и терминале без необходимости модификации кода.Pyforms продвигает модульный дизайн программного обеспечения и возможность повторного использования кода с минимальными усилиями.

    Смотрите также

    6 | Tkinter

    Интерфейс Tkinter или Tk - это фактический стандартный пакет графического интерфейса пользователя Python (графический интерфейс пользователя). Это среда с открытым исходным кодом, доступная на таких платформах, как Unix и Windows. Это один из самых простых и популярных способов создания приложения на Python с графическим интерфейсом.

    7 | Воск

    Wax - это среда графического интерфейса пользователя Python, которая располагается поверх wxPython (wxWindows для Python).Этот фреймворк удаляет низкоуровневые аспекты wxPython (который, по сути, является прямой привязкой к уродливому API C) и предоставляет вам простые объекты python для создания вашего графического интерфейса. Он также работает на многих платформах (Win32, Linux с GTK и macOS / OSX с Carbon).

    8 | WxPython

    WxPython - это кроссплатформенный инструментарий GUI с открытым исходным кодом для Python. Он реализован в виде набора модулей расширения Python, которые обертывают компоненты графического интерфейса популярной кроссплатформенной библиотеки wxWidgets, написанной на C ++.С помощью этой структуры разработчики могут создавать собственные пользовательские интерфейсы для своих приложений Python, которые работают в Windows, Mac, Linux или других Unix-подобных системах. Поскольку языком программирования является Python, программы wxPython просты, их легко писать и легко понимать.

    Подпишитесь на нашу рассылку новостей

    Получайте последние обновления и актуальные предложения, поделившись своей электронной почтой.


      Присоединяйтесь к нашей группе Telegram. Станьте частью интересного сообщества  

    Амбика Чоудхури

    Технический журналист, который любит писать о машинном обучении и искусственном интеллекте.Любитель музыки, сочинения и обучения чему-то нестандартному.

    Топ 5 лучших библиотек графического интерфейса Python

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

    Что такое графический интерфейс?

    Графический интерфейс пользователя или графический интерфейс пользователя - это интерактивная среда для получения ответов от пользователей в различных ситуациях, таких как формы, документы, тесты и т. Д. Он предоставляет пользователю хороший интерактивный экран, чем традиционный интерфейс командной строки (CLI).

    Список лучших библиотек графического интерфейса Python

    Давайте сразу перейдем к делу и рассмотрим лучшие библиотеки графического интерфейса пользователя для Python.

    1. PyQT5

    PyQT5 - это среда графического пользовательского интерфейса (GUI) для Python. Он очень популярен среди разработчиков, и графический интерфейс можно создать с помощью кода или дизайнера QT. Фреймворк QT Development - это визуальный фреймворк, который позволяет перетаскивать виджеты для создания пользовательских интерфейсов.

    Это бесплатное связующее программное обеспечение с открытым исходным кодом, реализованное для кроссплатформенной среды разработки приложений.Он используется в Windows, Mac, Android, Linux и Raspberry PI.

    Для установки PyQT5 вы можете использовать следующую команду:

    Здесь демонстрируется простой код:

     из PyQt5. QtWidgets import QApplication, QMainWindow
    import sys
    
    класс Window (QMainWindow):
       def __init __ (сам):
           супер () .__ init __ ()
    
           self.setGeometry (300, 300, 600, 400)
           self.setWindowTitle ("Окно PyQt5")
           self.show ()
    
    app = QApplication (sys.argv)
    window = Окно ()
    sys.выход (app.exec_ ())
    
     

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

    PyQt5

    Команда разработчиков Python из подчеркивает преимущества использования PyQt:

    PyQt - это зрелый набор привязок Python к Qt для кроссплатформенности. разработка настольных приложений. Он предлагает богатый выбор встроенных виджетов и инструментов для создания пользовательских виджетов для формирования сложных графических интерфейсов, а также надежную поддержку базы данных SQL для подключения к базам данных и взаимодействия с ними.

    2. Python Tkinter

    Другой фреймворк GUI называется Tkinter. Tkinter - одна из самых популярных библиотек графического интерфейса Python для разработки настольных приложений. Это комбинация стандартного графического интерфейса пользователя TK и Python.

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

    Виджеты управления кнопками используются для отображения и разработки приложений, в то время как виджет холста используется для рисования фигур, таких как линии, многоугольники, прямоугольники и т. Д.в приложении. Кроме того, Tkinter - это встроенная библиотека для Python, поэтому вам не нужно устанавливать ее, как другую среду графического интерфейса. Ниже приведен пример кодирования с использованием Tkinter.

     из tkinter import *
    
    класс Root (Tk):
        def __init __ (сам):
            super (корень, сам) .__ init __ ()
    
            self.title ("Python Tkinter")
            self.minsize (500400)
    
    корень = Корень ()
    root.mainloop ()
     

    Вывод приведенного выше кода показан ниже:

    Tkinter

    3. PySide 2

    Третья библиотека графического интерфейса Python, о которой мы собираемся поговорить, - это PySide2, или вы можете назвать ее QT для python.Qt для Python предлагает официальные привязки Python для Qt (PySide2), позволяющие использовать его API-интерфейсы в приложениях Python, и инструмент генератора привязок (Shiboken2), который можно использовать для представления проектов C ++ в Python.

    Qt для Python доступен под LGPLv3 / GPLv3 и коммерческой лицензией Qt.

    Итак, теперь позвольте мне показать вам процесс установки, а также пример. Итак, для установки вы можете просто использовать:

    Вот пример настройки графического интерфейса пользователя с помощью PySide2.

     из PySide2. QtWidgets импортировать QtWidgets, QApplication
    import sys
    
    Окно класса (QtWidgets):
        def __init __ (сам):
            супер () .__ init __ ()
    
            self.setWindowTitle ("Окно Pyside2")
            self.setGeometry (300,300,500,400)
    
    
    app = QApplication (sys.argv)
    window = Окно ()
    window.show ()
    app.exec_ ()
     

    Результат выполнения приведенного выше кода показан ниже:

    Pyside2

    4. Kivy

    Другой фреймворк графического интерфейса, о котором мы собираемся поговорить, называется Kivy. Kivy - это библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, таких как приложения с поддержкой мультитач.

    Kivy работает на Linux, Windows, OS X, Android, iOS и Raspberry Pi. Вы можете запустить один и тот же код на всех поддерживаемых платформах. Он может использовать большинство входов, протоколов и устройств, включая WM_Touch, WM_Pen, Mac OS X Trackpad и Magic Mouse, Mtdev, Linux Kernel HID.

    Kivy на 100% бесплатен по лицензии MIT.

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

    Графический движок Kivy построен на OpenGL ES 2 с использованием современного и быстрого графического конвейера.

    В набор инструментов входит более 20 виджетов, все с высокой степенью расширения. Многие части написаны на C с использованием Cython и протестированы с помощью регрессионных тестов.

    Приступая к установке Kivy, вам необходимо установить зависимость «glew». Вы можете использовать команду pip, как показано ниже:

     pip install Docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
     

    Введите эту команду и нажмите Enter, она будет установлена.После этого вам нужно ввести эту команду для установки Kivy:

    Итак, после установки позвольте мне показать вам простой пример Kivy, чтобы показать, насколько это просто.

     из приложения импорта kivy.app
    из kivy.uix.button import Button
    
    класс TestApp (приложение):
        def build (самостоятельно):
            Кнопка возврата (text = "Hello Kivy World")
    
    TestApp (). Run ()
     

    Вывод приведенного выше кода показан ниже:

    Kivy

    5. wxPython

    Итак, последняя структура графического интерфейса, о которой мы собираемся поговорить, - это wxPython.wxPython - это кроссплатформенный набор инструментов с графическим интерфейсом для языка программирования Python.

    Он позволяет программистам Python просто и легко создавать программы с надежным, высокофункциональным графическим пользовательским интерфейсом. Он реализован в виде набора модулей расширения Python, которые обертывают компоненты графического интерфейса популярной кроссплатформенной библиотеки wxWidgets, написанной на C ++.

    Подобно Python и wxWidgets, wxPython имеет открытый исходный код.

    wxPython - это кроссплатформенный инструментарий. Это означает, что одна и та же программа будет работать на нескольких платформах без изменений.В настоящее время поддерживаемыми платформами являются Microsoft Windows, Mac OS X и macOS, а также Linux.

    Теперь я собираюсь показать вам процесс установки и создать простой пример. Поэтому для установки просто введите следующую команду:

    Вот пример:

     import wx
    
    класс MyFrame (wx.Frame):
        def __init __ (я, родитель, заголовок):
            super (MyFrame, self) .__ init __ (родительский, title = title, size = (400,300))
    
    
        self.panel = MyPanel (сам)
    
    
    класс MyPanel (wx.Panel):
        def __init __ (я, родитель):
            супер (MyPanel, сам).__init __ (родитель)
    
    
    класс MyApp (wx.App):
        def OnInit (self):
            self.frame = MyFrame (parent = None, title = "Окно wxPython")
            self.frame.show ()
            вернуть True
    
    app = MyApp ()
    app.MainLoop ()
     

    Результат выполнения приведенного выше кода показан ниже:

    WxPython

    Заключение

    Итак, теперь мы увидели 5 библиотек графического интерфейса Python и, на мой взгляд, PySide2 и pyQt5 являются более мощными фреймворками графического интерфейса пользователя. Но они поставляются с коммерческой лицензией, и это объясняет, почему они многофункциональны.Tkinter, Kivy и wxPython - это бесплатные библиотеки графического интерфейса для Python.

    Какая ваша любимая библиотека графического интерфейса в Python?

    6 лучших фреймворков графического интерфейса Python в 2021 году

    Популярность

    Python среди разработчиков по всему миру подтверждена несколькими хорошо известными указателями языков программирования. Но британский аналитик SlashData, ориентированный на разработчиков, теперь подсчитал фактическое количество разработчиков, использующих этот язык.

    По данным SlashData в 2019 году, сейчас в мире 8,2 миллиона разработчиков, которые кодируют с использованием Python, и теперь это количество больше, чем тех, кто создает на Java, а их число составляет 7.6 миллионов. В сентябре 2018 года насчитывалось семь миллионов разработчиков Python и 7,1 миллиона разработчиков Java.

    Кроме того, Python имеет широкий спектр приложений от веб-разработки до настольных Графические интерфейсы пользователя (GUI) . Python GUI Framework побуждает нас больше узнавать о программировании на Python.

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

    Как было сказано ранее, Python GUI имеет множество фреймворков, которые дополняют все платформы. Он дает вам кроссплатформенную структуру и платформу для конкретной платформы. Теперь давайте рассмотрим 6 лучших фреймворков Python GUI в 2021 году для будущих разработчиков!

    1.Delphi VCL

    Библиотека визуальных компонентов ( VCL ) - это объектно-ориентированная среда на основе визуальных компонентов для разработки пользовательского интерфейса приложений Microsoft Windows. Он написан на Object Pascal.

    VCL - это набор визуальных компонентов для быстрой разработки приложений Windows на языках Delphi и C ++. VCL содержит широкий спектр визуальных, невизуальных и служебных классов для таких задач, как создание приложений Windows, веб-приложений, приложений баз данных и консольных приложений.Все классы в VCL происходят от TObject. TObject представляет методы, реализующие фундаментальное поведение, такое как построение, разрушение и обработка сообщений.

    Интегрируя его с Python с помощью Python для Delphi (P4D), вы легко выполняете сценарии Python, создаете новые модули Python и новые типы Python. Вы можете создавать расширения Python как библиотеки DLL и многое другое.

    P4D позволяет очень легко использовать Python в качестве языка сценариев для приложений Delphi. Он также поставляется с обширным набором демонстраций и руководств, готовых к использованию и разработанных для решения реальных проблем.

    Вы можете получить его здесь и прочитать наш вводный пост, чтобы вы начали работу с Delphi VCL с Python.

    2. Графический интерфейс Tkinter

    Tkinter обычно поставляется вместе с Python с использованием Tk и стандартной среды графического интерфейса Python. Он популярен благодаря своей простоте и графическому пользовательскому интерфейсу. Он имеет открытый исходный код и доступен по лицензии Python.

    Среди других инструментов графического интерфейса Python Tkinter является наиболее часто используемой средой графического интерфейса в Python.А также Django Framework использует графический интерфейс Tkinter для создания веб-страниц.

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

    3. Графический интерфейс PyQT

    PyQt - это Python UI-фреймворк для Qt, одного из популярных кроссплатформенных GUI-фреймворков, написанных на языке C ++ и принадлежащих Nokia.Это привязка Qt, разработанная Riverbank Computing Limited. PyQT поддерживает Windows, OS X, Linux, iOS и Android. PyQT имеет две редакции, одна - PyQT4, построенная против QT 4.x. Другой - PyQT5, построенный против QT 5.x. Однако в основном он используется для настольных приложений.

    Обе версии совместимы с Python 2 и 3. Лицензия на нее распространяется под лицензией GPL версии 3. Вы можете попробовать ее бесплатную версию, но некоторые функции в ней недоступны. Более того, если приложение, над которым вы работаете, имеет открытый исходный код, вы будете использовать PyQT с бесплатной лицензией.PyQT сочетает в себе лучшее из QT и Python и зарекомендовал себя как графический пользовательский интерфейс. Иногда это больше, чем набор инструментов Python GUI.

    4. Графический интерфейс Kivy

    Kivy GUI-фреймворки - более интересные проекты Python, поскольку они лицензированы MIT и основаны на OpenGL ES 2. OpenGL ES 2 был первым мобильным графическим API и по-прежнему самым доступным API для 3D-графики. Это библиотека Python с открытым исходным кодом, используемая для создания нового пользовательского интерфейса и для быстрой разработки веб-приложений.

    Kivy - одна из лучших библиотек графического интерфейса для Python, созданная на основе основного цикла, что делает ее совместимой с разработкой игр. Это приложение разработано и поддерживается профессионально и в основном используется в качестве коммерческих продуктов. Эта структура стабильна с графическим движком Kivy и использует современные и быстрые графические конвейеры.

    Kivy Python GUI Builder поддерживает почти все платформы, такие как Windows, Linux, OS X и Android. Более того, Kivy - более полезная библиотека графического интерфейса, поскольку в ней используются одни и те же коды для мобильных и настольных приложений.Кроме того, Kivy - это набор инструментов Python с открытым исходным кодом для графического интерфейса пользователя, который используется для мобильных приложений и других приложений multi-touch.

    5. Графический интерфейс пользователя WxPython

    Еще одно имя в списке лучших фреймворков Python GUI - WxPython. Это кроссплатформенный графический пользовательский интерфейс на языке программирования Python. Этот инструментарий позволяет программистам создавать высокоэффективный функциональный пользовательский интерфейс Python.

    WxPython - это быстро, легко и просто. WxPython создается как часть модуля расширения Python, который связывает элементы графического интерфейса известной кроссплатформенной библиотеки wxWidget.И эти элементы написаны на языке C ++.

    WxPython имеет открытый исходный код. Исходный код доступен для просмотра и изменения по мере необходимости. Это также позволяет добровольцам вносить свой вклад, исправлять или улучшать дизайн.

    6. Графический интерфейс PySide

    PySide - это бесплатный кроссплатформенный набор инструментов с графическим пользовательским интерфейсом Qt, инициированный и спонсируемый Nokia. Qt - это инфраструктура пользовательского интерфейса и кроссплатформенное приложение. PySide в настоящее время поддерживает Linux / X11, Mac OS X, Maemo, Windows, а поддержка Android планируется в ближайшем будущем.

    PySide предоставляет инструменты для работы с мультимедиа, XML-документами, сетью, базами данных и графическим интерфейсом. Ключевой особенностью PySide является его совместимость API с PyQt4, поэтому, если вы хотите перейти на PySide, этот процесс будет беспроблемным.

    Заключение

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

    Оцените Python4Delphi, который легко позволяет создавать графические интерфейсы Python для Windows с использованием Delphi.

    Как создать приложение с графическим интерфейсом пользователя с Python

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

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

    В Python шаги для начала программирования с графическим интерфейсом пользователя не слишком сложны, но они действительно требуют, чтобы пользователь начал делать какой-то выбор.По своей природе как язык программирования общего назначения с интерпретаторами, доступными во всех распространенных операционных системах, Python должен быть достаточно агностическим в отношении вариантов, которые он предоставляет для создания графических пользовательских интерфейсов.

    К счастью, существует множество возможностей для программистов, которые хотят создать простой способ взаимодействия пользователей со своими программами. Привязки существуют для нескольких фреймворков пользовательского интерфейса на различных платформах, в том числе для Linux, Windows и Mac, и многие из них работают на всех трех.

    Прежде чем идти дальше, станьте на мгновение своим собственным защитником дьявола и спросите: действительно ли имеет смысл для вашего приложения вообще иметь традиционный графический пользовательский интерфейс? Для некоторых программ ответ очевиден. Если ваше приложение изначально является графическим и либо оптимизировано, либо имеет смысл запускаться локально на одном локальном компьютере, то да, вам, вероятно, следует подумать о создании графического интерфейса для рабочего стола. Часто это становится очевидным из того, что вы разрабатываете.

    Но для программ общего назначения не считайте ни командную строку, ни веб-интерфейс.Командная строка предлагает множество преимуществ - скорость, удаленный доступ, возможность повторного использования, возможность создания сценариев и контроль, - которые могут быть более важны для пользователей вашего приложения, чем графический интерфейс, и существует множество библиотек, таких как Click, Cement и Cliff, которые упрощают создавать отличные программы из командной строки.

    Точно так же веб-интерфейс, даже для программы, предназначенной для локального запуска, может быть вариантом, который стоит рассмотреть, особенно если вы считаете, что ваши пользователи могут захотеть разместить ваше приложение удаленно, а такие проекты, как Django, Flask или Pyramid, делают это. простой.Вы даже можете использовать такую ​​библиотеку, как pywebview, чтобы поместить тонкую оболочку вокруг веб-приложения в собственное окно графического интерфейса.

    В качестве альтернативы вы можете использовать фреймворк, такой как Pyforms, для создания единообразного взаимодействия в Интернете, командной строке и на рабочем столе с использованием единой базы кода.

    Все еще уверены, что хотите создать графический интерфейс? Отлично, вот несколько фантастических библиотек с открытым исходным кодом, с которых можно начать.

    PyQt, PySide и Qt для Python

    PyQt реализует популярную библиотеку Qt, поэтому, если вы знакомы с разработкой Qt на другом языке, возможно, по разработке собственных приложений для KDE или другой среды рабочего стола на основе Qt, вы, возможно, уже знакомы с Qt.Это открывает возможность разработки приложений на Python, которые имеют знакомый внешний вид на многих платформах, с одновременным использованием инструментов и знаний большого сообщества Qt.

    Qt хорошо зарекомендовал себя в сообществе разработчиков и имеет инструменты, отражающие это. Написание приложений Python на основе Qt означает, что у вас есть доступ к QtCreator, который имеет режим конструктора для генерации кода для макета вашего приложения.

    PyQt имеет двойную лицензию как по коммерческой, так и по GPL лицензии, в отличие от самого проекта Qt, и основная компания, поддерживающая PyQt, предлагает часто задаваемые вопросы о лицензии, чтобы помочь понять, что это означает для вашего приложения.

    В качестве другого варианта использования библиотек Qt с Python рассмотрите Qt для Python (обычно известный как PySide2), доступный в рамках LPGL.

    Tkinter

    Если бы существовал единственный пакет, который можно было бы назвать «стандартным» набором инструментов графического интерфейса для Python, то это был бы Tkinter. Tkinter - это оболочка для Tcl / Tk, популярного графического интерфейса и языковой пары, впервые популярной в начале 90-х годов. Преимущество выбора Tkinter - это огромное количество ресурсов, включая книги и образцы кода, а также большое сообщество пользователей, которые могут помочь вам, если у вас возникнут вопросы.С простых примеров легко начать работу, и они довольно удобочитаемы.

    Tkinter доступен под лицензией Python поверх лицензии BSD Tcl / Tk.

    WxPython

    WxPython переносит кроссплатформенную библиотеку графического интерфейса wxWidgets из собственного C ++ в Python. WxPython выглядит немного более естественным, чем Tkinter, в разных операционных системах, потому что он использует виджеты хост-системы для создания графического интерфейса. Начать работу с ним довольно просто, и сообщество разработчиков постоянно растет.Вам может потребоваться связать wxPython с вашими приложениями или потребовать, чтобы пользователь установил его самостоятельно, поскольку он не устанавливается автоматически вместе с Python.

    WxPython использует лицензию библиотеки wxWindows для своего родительского проекта, одобренного OSI.

    Python GTK + 3

    Ранее известный как PyGTK, проект Python GTK + 3 обеспечивает привязки Python к объектам GTK (окнам, виджетам и т. Д.). GTK + наиболее широко используется в качестве основы для рабочего стола GNOME, но он доступен для автономных приложений в Linux, Windows и Mac.С Python GTK + 3 такая же структура доступна для ваших проектов Python.

    Когда вы используете Python GTK + 3, вы можете использовать многие из тех же инструментов разработки, которые созданы для самого GTK +. В частности, сюда входит Glade, дизайнер интерфейсов для приложений GTK +. Интерфейсы, разработанные в Glade, сохраняются как XML и используются объектом GtkBuilder в коде вашего приложения, но интерфейс, который вы используете, является перетаскиваемым, что упрощает создание динамического и отзывчивого пользовательского интерфейса без необходимости переводить то, что вы видите в своем коде. разум в код макета.

    Киви

    Созданный с учетом быстрой разработки и современных устройств, Kivy представляет собой набор инструментов для Linux (включая Raspberry Pi), Windows, Mac и Android. Проект ориентирован на «инновационные пользовательские интерфейсы» и используется для мультимедийных приложений, таких как приложения для музыкальных контроллеров для телефонов и приложения для интерактивной доски, занимающие всю стену конференц-зала.

    Kivy не имеет программы визуального макета, такой как QtCreator и Glade, но он использует свой собственный язык дизайна, чтобы помочь вам связать макет пользовательского интерфейса с объектами кода.Это позволяет вам легко разделить (как мысленно, так и в коде макета) классы и функции в вашем приложении. Kivy также размещает Kivy Garden, хранилище пользовательских виджетов и надстроек, поэтому, если вы думаете о создании чего-то, чего не предоставляет сама Kivy, возможно, это уже существует в Garden.


    Это не единственный выбор, который у вас есть, даже далеко. Чтобы узнать о дополнительных возможностях, посетите страницу «Программирование с графическим интерфейсом на Python» в официальной вики-странице Python Software Foundation, где перечислены десятки других инструментов.Доступны решения для привязки Python ко многим различным библиотекам виджетов и инструментам графического интерфейса, таким как FLTK, FOX и многим другим. Хотя новичкам, вероятно, следует избегать проектов, предоставляющих только частичную реализацию или тех, которые больше не поддерживаются активно, существует множество хороших инструментов для различных ситуаций.

    Многие варианты существуют для традиционных приложений, которые принимают оконный вид и поведение их родительской среды рабочего стола, но также бывают случаи, когда вы можете захотеть сделать что-то совершенно другое, например, в видеоигре.Есть отличные библиотеки для этих ситуаций, такие как pygame, pyglet и Panda3d.

    У вас есть фаворит, не упомянутый здесь? Дайте нам знать в комментариях ниже!

    Вы хотите прочитать больше подобных статей? Подпишитесь на нашу еженедельную рассылку новостей по электронной почте.

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *