Архив метки: Python

Создайте приложение PyQt на примере

PyQt — очень полезная библиотека Python, используемая для разработки графических приложений. Он использует среду Qt GUI Python, разработанную с использованием языка C++. Графический пользовательский интерфейс приложения может быть разработан путем импорта библиотеки PyQt в скрипт Python или с помощью модуля Qt Designer в PyQt. Если вы не хотите писать код для реализации графического интерфейса приложения, то лучше установить Qt Designer и создать с его помощью графический интерфейс пользователя. В этой статье шаг за шагом показан способ создания приложения PyQt на Python.

 

Создайте простое приложение PyQt для добавления:

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

Шаги:

Шаг 1. Создайте объект приложения PyQt

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

Модули QApplication, QMainWindow, QLabel, QTextEdit и QPushButton потребуются для разработки приложения.

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

# Импортировать необходимые модули

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QTextEdit, QPushButton

 

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

# Создать объект PyQt application

app = QApplication([])

# Запустить цикл событий для выполнения приложения

app.exec()

Шаг 2. Создайте класс и оконный объект

Создайте класс для добавления необходимых объектов на этом шаге для разработки окна приложения.

Добавьте следующие строки, чтобы создать класс с оконным объектом. Здесь задаются заголовок, размер и положение окна. Затем вызывается метод show() для отображения окна в качестве вывода.

class addition(QMainWindow):

def __init__(self):

# Вызвать родительский конструктор

super().__init__()

# Установить заголовок окна

self.setWindowTitle("Приложение добавления PyQt")

# Установить ширину и высоту окна

self.resize(350, 200)

# Сдвинуть положение окна

self.move(800, 400)

# Отображение окна

self.show()




 

Вы должны создать объект класса перед запуском цикла событий.

# Создание оконного объекта

window = add()

 

Следующее пустое окно появится после выполнения сценария.

 

Шаг 3: Добавьте необходимые виджеты в окно для добавления

Теперь добавьте необходимые объекты, необходимые для реализации приложения. На этом шаге создаются три объекта виджета QLabel, два объекта виджета QTextEdit и объект кнопки виджета QPushButton.Первые два объекта метки будут использоваться для предоставления текста помощи перед текстовыми полями. Объекты QTextEdit будут использоваться для получения от пользователя двух числовых значений. Будет создан объект QPushButton для вычисления суммы входных чисел с использованием функции обработчика событий, которая будет создана на следующем шаге. Последний объект метки будет использоваться для отображения суммы двух чисел. Здесь функция setGeometry () вызывается для каждого объекта, чтобы установить положение объекта в окне.

# Создать метку для первого номера

self.lbl1 = QLabel('Номер 1', self)

self.lbl1.setGeometry(80, 20, 80, 50)

# Создать текстовое поле для первого числа

self.textbox1 = QTextEdit(self)

self.textbox1.setGeometry(80, 60, 70, 30) 

# Создать метку для второго номера

self.lbl2 = QLabel('Номер 2', self)

self.lbl2.setGeometry(200, 20, 80, 50)

# Создать текстовое поле для второго числа

self.textbox2 = QTextEdit(self)

self.textbox2.setGeometry(200, 60, 70, 30)



# Создать кнопку для расчета суммы

self.submit = QPushButton('Вычислить сумму ', self)

self.submit.setGeometry(80, 100, 190, 30)

# Создать метку для отображения результата суммирования

self.lblResult = QLabel('', self)

self.lblResult.setGeometry(80, 130, 200, 50)




 

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

 

Шаг 4. Создайте и вызовите функцию для обработки события нажатия кнопки.

Создайте метод с именем onClicked () со следующими строками внутри класса добавления для обработки события нажатия кнопки. Значения текстовых полей преобразуются в целые числа , используя Int () функцию и хранятся в num1 и num2 переменные. Далее, сумма num1 и num2 сохраняются в результате переменной. Значения num1, num2 и результирующих переменных преобразуются в значения строк с использованием ул () функцию, перед сохранением значения в выходной Переменная. Третий объект метки используется для отображения содержимого выходной переменной.

def onClicked(self):



num1 = int(self.textbox1.toPlainText())

num2 = int(self.textbox2.toPlainText())

result = num1 + num2

output = "<p style = 'color: blue'> Сумма из " + str(num1)+ " и " + str(num2)+"is" + str(result)+ '</p>'

self.lblResult.setText(output)




 

Добавьте следующие строки в класс после объекта кнопки для вызова метода onClicked() при нажатии кнопки.

# Вызов функции при нажатии кнопки

self.submit.clicked.connect(self.onClicked)

 

Если после выполнения сценария пользователь ввел 12 и 18 в текстовые поля и нажал кнопку «Вычислить сумму», под кнопкой появится следующий форматированный вывод.

 

Вывод :

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



2021-02-14T12:05:04
Python

Как использовать флажок PyQt в Python?

Флажок используется для выбора нуля или более вариантов из многих вариантов с помощью графического пользовательского интерфейса. Форма с флажком может быть создана с помощью класса QCheckBox в скрипте Python или с помощью виджета QCheckBox в Qt Designer без написания какого-либо скрипта.

Когда форма с флажком создается с использованием класса QCheckBox, тогда вызывается функция stateChanged.connect(), чтобы применить действие, выполненное пользователем. Если пользователь установил какой-либо параметр флажка, тогда значение QtCore.Qt.checked будет True. С помощью класса QbuttonGroup можно создать несколько флажков с одним выбором, например Radio Button.

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

 

Необходимые методы QCheckBox

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










Название методаЦель
isChecked()Возвращает логическое значение. Когда пользователь щелкает, чтобы установить флажок, он возвращает True, в противном случае он возвращает False.
setChecked ()Он используется для изменения состояния флажка. Установлено значение True, чтобы флажок был установлен, а значение False — чтобы снять флажок.
text()Он используется для чтения метки флажка.
setText()Он используется для установки метки флажка.
isTriState()Возвращает логическое значение. Он используется для проверки тройного состояния, чтобы узнать, включен ли флажок.
setTriState()Он используется для включения третьего состояния флажка, который указывает нейтральное состояние.

 

Создайте форму с флажком, используя класс QCheckBox:

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

 

Пример 1: Создание единого флажка

В этом примере показан способ создания одного флажка с использованием класса QCheckBox и считывание входного значения флажка, предоставленного пользователем. Необходимые модули импортируются в начале скрипта. Метка используется в поле вышеупомянутого флажка для предоставления информации пользователю. Если пользователь установит флажок, чтобы проверить, скрипт напечатает: «Ух ты! Вы любите программировать», иначе сценарий напечатает: «О нет! Вы не любите программировать».

# Импортировать необходимые модули

import sys

from PyQt5 import QtCore, QtWidgets

from PyQt5.QtWidgets import QMainWindow, QCheckBox, QLabel, QVBoxLayout, QDesktopWidget

# Определите класс для создания формы с одним флажком

class SingleCheckbox(QMainWindow):

def __init__(self):

super().__init__()

# Создайте текст метки для пользователя

lb = QLabel(«Вам нравится программирование?», self)

lb.setGeometry(20, 20, 200, 20)

lb.move(20, 20)

# Создайте флажок с меткой

cb = QCheckBox(‘Да’, self)

cb.stateChanged.connect(self.Check_Answer)

cb.move(20, 50)

# Установить вертикальную планировку интервала QT

vbox = QVBoxLayout()

vbox.addWidget(lb)

vbox.addWidget(cb)

# Установите заголовок и размер окна

self.setWindowTitle(‘Form with Single Checkbox’)

self.setGeometry(60, 60, 300, 100)

# Отображение окна в центре экрана

win = self.frameGeometry()

pos = QDesktopWidget().availableGeometry().center()

win.moveCenter(pos)

self.move(win.topLeft())

self.show()

# Определите функцию для проверки ввода пользователя

def Check_Answer(self, state):

if state == QtCore.Qt.Checked:

print(«Ух ты! Вы любите программирование.»)

else:

print(«О нет! — Вы не любите программировать.»)

# Создайте объект приложения и выполните его

app = QtWidgets.QApplication(sys.argv)

form = SingleCheckbox()

app.exec()

 

Пример 2: Создание нескольких флажков

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

# Импортировать необходимые модули

import sys

from PyQt5.QtWidgets import (QWidget, QCheckBox, QApplication, QVBoxLayout, QLabel, QDesktopWidget)

# Определите класс для создания формы с несколькими флажками

class MultipleCheckbox(QWidget):

def __init__(self):

super().__init__()

# Установите текст метки для пользователя

lb = QLabel(«Выберите свою любимую еду(ы):», self)

lb.setGeometry(20, 20, 100, 20)

lb.move(20, 20)

# Создайте три флажка

cb1 = QCheckBox(‘Шоколадный торт’, self)

cb1.move(20, 70)

cb1.stateChanged.connect(lambda: self.Selected_Value(cb1))

cb2 = QCheckBox(‘Мороженое’, self)

cb2.move(20, 90)

cb2.stateChanged.connect(lambda: self.Selected_Value(cb2))

cb3 = QCheckBox(‘Макароны’, self)

cb3.move(20, 110)

cb3.stateChanged.connect(lambda: self.Selected_Value(cb3))

self.label = QLabel(‘Ничего не выбрано’)

self.label.move(20, 150)

# Установить вертикальную планировку интервала QT

vbox = QVBoxLayout()

vbox.addWidget(lb)

vbox.addWidget(cb1)

vbox.addWidget(cb2)

vbox.addWidget(cb3)

vbox.addWidget(self.label)

self.setLayout(vbox)

self.setWindowTitle(‘Форма с несколькими флажками’)

self.setGeometry(60, 60, 350, 200)

self.lblText = »

# Отображение окна в центре экрана

win = self.frameGeometry()

pos = QDesktopWidget().availableGeometry().center()

win.moveCenter(pos)

self.move(win.topLeft())

self.show()

# Определите функцию для чтения входных данных пользователя

def Selected_Value(self, btn):

if self.lblText != »:

str = self.lblText

strArray = str.split(‘ ,’)

self.lblText = »

for val in strArray:

if btn.text() != val:

if self.lblText == »:

self.lblText = val

else:

self.lblText += ‘ ,’ + val

if btn.isChecked() == True:

if self.lblText == »:

self.lblText = btn.text()

else:

self.lblText += ‘ ,’ + btn.text()

else:

if btn.isChecked() == True:

if self.lblText == »:

self.lblText = btn.text()

else:

self.lblText += ‘ ,’ + btn.text()

self.label.setText(‘Вы выбрали n’ + self.lblText)

# Создайте объект приложения и выполните его

app = QApplication(sys.argv)

ex = MultipleCheckbox()

sys.exit(app.exec_())

 

Значение по умолчанию для второй метки — «Ничего не выбрано», и значение метки будет изменено, когда какой-либо флажок установлен или снят пользователем.

 

Вывод

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



2021-02-13T05:59:26
Python

Книги по машинному обучению и искусственному интеллекту, вышедшие в 2019 году

 

Искусственный интеллект с примерами на Python.

Машинное обучение, глубокое обучение, искусственный интеллект — очень популярные сегодня области знаний.

Мы составили подборку книг, которые пригодятся вам при изучении этих тем. Не так давно мы публиковали аналогичную подборку книг, вышедших в 2020 году, а сейчас сосредоточимся на книгах 2019 года.

Автор: Пратик Джоши. Язык: русский.

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

Как использовать функцию NumPy unique() в Python

Библиотека NumPy используется в Python для создания одного или нескольких размерных массивов, и у нее есть много функций для работы с массивом. Функция unique() — одна из полезных функций этой библиотеки для определения уникальных значений массива и возврата отсортированных уникальных значений. Эта функция также может возвращать кортеж значений массива, массив ассоциативных индексов и количество раз, когда каждое уникальное значение появляется в основном массиве. В этом руководстве показаны различные варианты использования этой функции.

 

Синтаксис:

Синтаксис этой функции приведен ниже.

array numpy.unique(input_array, return_index, return_inverse, return_counts, axis)

Эта функция может принимать пять аргументов, назначение которых объясняется ниже.

  • input_array: это обязательный аргумент, который содержит входной массив, из которого выходной массив будет возвращен путем извлечения уникальных значений. Если массив не является одномерным массивом, то массив будет сглаженным.
  • return_index: это необязательный аргумент, который может принимать логическое значение. Если для этого аргумента установлено значение True, он вернет индексы входного массива.
  • return_inverse: это необязательный аргумент, который может принимать логическое значение. Если для этого аргумента установлено значение True, он вернет индексы выходного массива, который содержит уникальные значения.
  • return_counts: это необязательный аргумент, который может принимать логическое значение. Если для этого аргумента установлено значение True, он вернет количество раз, когда каждый элемент уникального массива появляется во входном массиве.
  • axis: это необязательный аргумент, который может принимать любое целочисленное значение или None. Если для этого аргумента не задано значение, входной массив будет сглажен.

Функция unique() может возвращать четыре типа массивов на основе значений аргументов.

 

Пример 1: Распечатать уникальные значения одномерного массива

В следующем примере показано использование функции unique() для создания массива с уникальными значениями одномерного массива. В качестве значения аргумента функции unique() используется одномерный массив из 9 элементов. Возвращенное значение этой функции напечатано позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив целого числа



np_array = np. unique ([55, 23, 40, 55, 35, 90, 23, 40, 80])



# Распечатать уникальные значения



print("Массив уникальных значений: n", np_array)

 

Выход :

Входной массив содержит 6 уникальных элементов, которые отображаются на выходе.

 

Пример 2: Распечатать уникальные значения и индексы на основе входного массива

В следующем примере показано, как можно получить уникальные значения и индексы двумерного массива с помощью функции unique(). В качестве входного массива используется двумерный массив из 2 строк и 6 столбцов. Для аргумента return_index установлено значение True, чтобы получить индексы входного массива на основе уникальных значений массива.

# Импортировать библиотеку NumPy



import numpy as np



# Создать двумерный массив



np_array = np. array([ [ 6, 4, 9, 6, 2, 9 ], [ 3, 7, 7, 6, 1, 3 ] ])



# Распечатать двумерный массив



print("Содержимое двумерного массива : n", np_array)



# Создайте уникальный массив и индексный массив уникальных значений



unique_array, index_array = np. unique(np_array, return_index = True)



# Распечатать значения уникального и индексного массивов



print("Содержимое уникального массива: n", unique_array)



print("Содержимое индексного массива: n", index_array)

 

Выход :

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

Пример 3: Распечатать уникальные значения и индексы на основе выходного массива

В следующем примере показано, как уникальные значения одномерного массива и индексы основаны на уникальных значениях с помощью функции unique (). В сценарии в качестве входного массива используется одномерный массив из 9 элементов. Значение аргумента return_inverse установлено в True, что вернет другой массив индексов на основе уникального индекса массива. И уникальный массив, и индексный массив напечатаны позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив целочисленных значений



np_array = np. array([ 10, 60, 30, 10, 20, 40, 60, 10, 20 ])



print("Значения входного массива: n", np_array)



# Создайте уникальный массив и обратный массив



unique_array, inverse_array = np.unique(np_array, return_inverse=True)



# Распечатать значения уникального массива и обратного массива



print("Значения уникального массива: n", unique_array)



print("Значения обратного массива: n", inverse_array)

 

Выход :

На выходе был показан входной массив, уникальный массив и обратный массив. Входной массив содержит 5 уникальных значений. Это 10, 20, 30, 40 и 60. Входной массив содержит 10 в трех индексах, которые являются первым элементом уникального массива. Итак, 0 появился в обратном массиве трижды. Остальные значения обратного массива были размещены таким же образом.

 

Пример 4: Распечатайте уникальные значения и частоту каждого уникального значения

В следующем примере показано, как функция unique () может получить уникальные значения и частоту каждого уникального значения входного массива. Значение аргумента return_counts было установлено в True для получения массива значений частоты. Одномерный массив из 12 элементов был использован в функции unique () в качестве входного массива. Массив уникальных значений и значения частоты были напечатаны позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив целочисленных значений



np_array = np. array([70, 40, 90, 50, 20, 90, 50, 20, 80, 10, 40, 30])



print("Значения входного массива: n", np_array)



# Создать уникальный массив и подсчитать массив



unique_array,count_array = np.unique(np_array, return_counts = True)



# Распечатать значения уникального массива и обратного массива



print("Значения уникального массива: n", unique_array)



print("Значения массива count: n", count_array)

Выход :

Входной массив, уникальный массив и массив счетчиков были напечатаны в выходных данных.

 

Заключение

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



2021-02-11T10:14:44
Python

Изучаем популярные библиотеки Python: книги 2019 года

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

Стандартная библиотека Python 3: справочник с примерами

Обложка книги "Стандартная библиотека Python 3: справочник с примерами"

Автор: Даг Хеллман. Язык: русский.

Автор книги, Даг Хеллман, имеет большой опыт работы с Python (еще с 1997 года). Увлечение этим языком подвигло его писать статьи для тематических изданий. Кроме того, Даг активно вел свой блог, где писал о самых используемых модулях Python. Эти статьи активно комментировались читателями и соответственно исправлялись и дополнялись. Переработав материал своих статей под Python 3, Даг выпустил книгу «Стандартная библиотека Python 3».

Описания модулей в книге сгруппированы по темам (текст, структуры данных, алгоритмы, дата и время, математика, файловая система, сжатие данных, криптография и т.д.). Каждое описание модуля сопровождается примером использования его в коде.

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

PyTorch Recipes

Обложка книги "PyTorch Recipes"

Автор: Pradeepta Mishra. Язык: английский.

Pradeepta Mishra занимается наукой о данных и созданием систем искусственного интеллекта на профессиональном уровне. Помимо «PyTorch Recipes», он также написал «R Data Mining Blueprints» и «R: Mining Spatial, Text, Web, and Social Media Data». По этим книгам созданы обучающие курсы на Udemy.

«PyTorch Recipes» предназначена для специалистов data science и разработчиков, занятых в сфере обработки естественного языка и искусственного интеллекта.

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

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

По сути эта книга — практическое руководство. Как и заявлено в названии, это сборник конкретных рецептов применения PyTorch.

Знакомство с PyTorch

Авторы: Брайан Макмахан, Делип Рао. Язык: русский.

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

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

Learn Keras for Deep Neural Networks

Обложка книги "Learn Keras for Deep Neural Networks"

Автор: Jojo Moolayil. Язык: английский.

Книга предназначена для быстрого ознакомления с темой глубокого обучения. Ее «целевая аудитория» — разработчики, владеющие любым современным языком программирования (не обязательно Python). Если вы уже немного разбираетесь в глубоком обучении и хотели бы изучить более продвинутые темы, такие как компьютерное зрение, распознавание речи и т. п., — эта книга вам не подойдет: она для новичков.

Читая эту книгу, вы научитесь проектировать, разрабатывать, тренировать, проверять и развертывать глубокие нейронные сети, используя открытую библиотеку Keras.

Beginning Anomaly Detection Using Python-Based Deep Learning

Обложка книги "Beginning Anomaly Detection Using Python-Based Deep Learning"

Авторы: Sridhar Alla, Suman Kalyan Adari. Язык: английский.

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

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

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

В дополнение к основному материалу книги авторы рассматривают Keras и PyTorch — самые популярные фреймворки Python в сфере глубокого обучения.

Numerical Python

Обложка книги "Numerical Python"

Автор: Robert Johansson. Язык: английский.

Robert Johansson — опытный питонист, имеющий докторскую степень по теоретической физике. Научными вычислениями (и теорией, и практикой) он занимается уже больше 10 лет.

В своей книге «Numerical Python» Роберт показал, как можно осуществлять научные вычисления, используя Python и его экосистему. Дело в том, что работа с научными и численными вычислениями требует знания как математики, так и программирования. Цель данной книги — перебросить мост между этими двумя направлениями.

Книга состоит из 19 глав, каждая из которых освещает разные аспекты научных вычислений. В привязке к каждой отдельной теме рассматриваются разные библиотеки Python: NumPy, SymPy, Matplotlib, SciPy, PyMC.

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

Mastering GUI Programming with Python

Обложка книги "Mastering GUI Programming with Python"

Автор: Alan D. Moore. Язык: английский.

Алан Мур — аналитик данных и разработчик ПО, работающий на Python с 2006 года. Свои приложения он создает при помощи Django, Flask, Qt и Tkinter. Помимо этой книги, он написал также «Python GUI Programming with Tkinter».

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

Но по PyQt просто удивительно мало обучающих ресурсов. Людям приходится пользоваться устаревшими книгами, документацией C++, искать информацию в блогах и постах на Stack Overflow. Эта книга призвана восполнить пробел и послужить современным пособием по PyQt для Python-разработчиков.

В своей первой книге — «Python GUI Programming with Tkinter» — Алан Мур разбирал основы создания графических интерфейсов. В этой же он решил сосредоточиться на тех уникальных возможностях, которые предоставляет именно PyQt: мультимедиа, анимация, 3D-графика, сети, многопоточность.

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


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

Сообщение Изучаем популярные библиотеки Python: книги 2019 года появились сначала на Pythonist.


Source: pythonist.ru knigi feed

Работа с временным файлом в Python

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

 

Создание временного файла без модуля tempfile

Задачу временного файла можно выполнить без использования модуля tempfile, создав простой файл. Для этого вы должны создать обычный файл, выполнить временные задачи и удалить файл после выполнения задач. В этом примере временный файл с именем temp.txt открывается в режиме записи, и во временный файл записывается текст. Модуль ‘ os ‘ используется здесь для чтения содержимого файла temp.txt и удаления файла после выполнения задачи.

# Импортировать модуль os

import os# Определить имя временного файла

filename = ‘temp.txt’

# Открыть файл в режиме чтения

fh = open(filename, ‘w’)

try:

# Распечатать сообщение перед записью

print(«Запись в файл >>> n»)

# Записываем строку в файл

fh.write(«Тестирование временного файла»)

# Наконец, закроем файл после записи

fh.close()

finally:

# Напечатайте сообщение перед чтением

print(«<<< Чтение из файла»)

# Запустить команду bash, чтобы прочитать файл

os.system(«cat temp.txt»)

# Распечатать новую строку

print(«n»)

# Удалить временный файл

os.remove(filename)

Создание временного файла с помощью метода TemporaryFile()

В этом примере для создания временного файла используется модуль tempfile. В этом модуле есть много методов работы с временным файлом. Метод TemporaryFile() используется здесь для создания временного файла. Временный файл открывается в сценарии как текстовый файл в режиме записи. По умолчанию временный файл будет создан в текущем месте. Две строки текста записываются во временный файл с помощью метода write(). Затем вызывается метод seek(), чтобы установить указатель файла в начало файла. Содержимое файла печатается в терминале с помощью метода read(). Метод close() модуля используется для закрытия файла и автоматического удаления файла.

# Импортировать модуль временного файла

import tempfile# Объявить объект для открытия временного файла для записи

tmp = tempfile.TemporaryFile(‘w + t’)

try:

# Распечатать сообщение перед записью

print(‘Запись во временный файл …’)

# Записать данные во временный файл

tmp.write(‘AndreyEx n’)

tmp.write(‘Содержимое временного файла’)

# Перейти к началу файла

tmp.seek(0)

# Прочитать содержимое временного файла

print(‘ Чтение временного файла: n {0} ‘.format(tmp.read()))

finally:

# Автоматическое удаление временного файла

tmp.close()

Создание временного файла с использованием метода NamedTemporaryFile ()

В предыдущем примере имя временного файла создается случайным образом. Но если вы хотите установить любое собственное имя для временного файла, вы должны использовать метод NamedTemporaryFile() для создания временного файла. В этом примере временный файл открывается в режиме записи с помощью метода NamedTemporaryFile(). Далее устанавливается имя файла temp.txt. Одна строка текста записывается в файл и считывается из файла, как в предыдущем примере. Ранее упоминалось, что временный файл удаляется автоматически при вызове метода close(). После удаления здесь используется модуль ‘os’, чтобы проверить, существует ли временный файл.

# Импортировать модуль временного файла

import tempfile# Импортировать модуль os

import os

# Объявить объект для открытия временного файла для записи

tmp = tempfile.NamedTemporaryFile(‘w + t’)

# Объявить имя временного файла

tmp.name = «temp.txt»

try:

# Распечатать сообщение перед записью

print(‘Записать данные во временный файл …’)

# Записать данные во временный файл

tmp.write(‘Это временное содержимое.’)

# Перейти к началу файла

tmp.seek(0)

# Прочитать содержимое временного файла

print(‘Прочитать содержимое временного файла: n {0}’ .format(tmp.read()))

finally:

# Удалить файл автоматически

tmp.close()

# Проверить, существует ли файл,

if (os.path.exists(tmp.name)) :

print(‘Файл существует’)

else:

print(‘Файл не существует’)

Создание временного файла с префиксом и суффиксом

Все временные файлы создаются в текущем месте для предыдущих примеров. Местоположение временного файла, а также префикс и суффикс для временного файла можно указать во время создания файла с помощью метода NamedTemporaryFile(). Согласно следующему сценарию, временное имя файла будет начинаться с «tm_» и заканчиваться на «_fl». Файл будет сохранен в папке «/tmp». После создания файла временное имя файла печатается с использованием свойства name . Затем модуль ‘ os’ проверяет, удален файл или нет.

# Импортировать модуль временного файла

import tempfile# Импортировать модуль os

import os

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

tmp = tempfile.NamedTemporaryFile(mode = ‘w + t’, prefix = ‘tm_’, suffix = ‘_fl’, dir = ‘/tmp’)

# Распечатать временное имя файла

print(tmp.name)

try:

# Распечатать сообщение перед записью

print(‘Записать данные во временный файл …’)

# Записать данные во временный файл

tmp.write(‘Это временное содержимое.’)

finally:

# Автоматически удалить файл

tmp.close()

if (os.path.exists(tmp.name) == False) :

print(‘Файл удален’)

Заключение:

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



2021-01-28T09:15:56
Python