PyQt

Поделись знанием:
(перенаправлено с «QtGUI»)
Перейти к: навигация, поиск
PyQt

Qt Designer в Linux с KDE
Тип

Привязка Qt для Python

Разработчик

Riverbank Computing

Написана на

C++, PythonК:Википедия:Статьи без источников (тип: не указан)[источник не указан 5001 день]

Операционная система

Мультиплатформенное ПО (Windows, MacOS, Unix)

Первый выпуск

1998 год

Последняя версия

5.6 (24 апреля 2016)

Лицензия

GPL2, GPL3 и коммерческая

Сайт

[www.riverbankcomputing.com/software/pyqt/intro erbankcomputing.com/software/pyqt/intro]

PyQtPyQtК:Программное обеспечение, разработанное в 1998 году

PyQt — набор «привязок» графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python.

PyQt разработан британской компанией Riverbank Computing[1]. PyQt работает на всех платформах, поддерживаемых Qt: Linux и другие UNIX-подобные ОС, Mac OS X и Windows. Существует 2 версии: PyQt5, поддерживающий Qt 5, и PyQt4, поддерживающий Qt 4. PyQt распространяется под лицензиями GPL (2 и 3 версии) и коммерческой[2].

PyQt практически полностью реализует возможности Qt. А это более 600 классов[3], более 6000 функций и методов, включая:

PyQt также включает в себя Qt Designer (Qt Creator) — дизайнер графического интерфейса пользователя. Программа pyuic генерирует Python код из файлов, созданных в Qt Designer. Это делает PyQt очень полезным инструментом для быстрого прототипирования. Кроме того, можно добавлять новые графические элементы управления, написанные на Python, в Qt Designer.

Раньше PyQt поставлялся вместе со средой разработки Eric, написанной на PyQt. Eric имеет встроенный отладчик и может быть использована для создания консольных программ. Теперь она доступна в качестве отдельного проекта[4][5][6].





Обзор основных модулей

  • QtCore — основные не графические классы: система сигналов и слотов, платформонезависимые абстракции для Unicode, потоков, разделяемой памяти, регулярных выражений и т. д.
  • QtGui — компоненты графического интерфейса (элементы управления), основанные на визуальном представлении.
  • QtNetwork — классы для сетевого программирования. Например, клиентов и серверов через UDP и TCP.
  • QtOpenGL — классы, позволяющие использовать OpenGL и 3D-графику в приложениях PyQt.
  • QtScript — классы, позволяющие использовать встроенный в Qt интерпретатор JavaScript для управления приложением.
  • QtSql — классы для интеграции с базами данных с помощью SQL.
  • QtSvg — классы для отображения векторной графики в формате SVG.
  • QtXml — классы, реализующие обработку XML.
  • uic — реализация обработки XML-файлов, созданных в Qt Designer, для генерации из них Python-кода графического интерфейса[2].

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

Qt Designer является кросс-платформенным компоновщиком макетов и форм графического интерфейса пользователя. Он позволяет быстро спроектировать виджеты и диалоги, используя экранные формы с использованием тех же виджетов, которые будут использоваться в приложении. Формы, созданные с Qt Designer, являются полностью функциональными, а также могут быть просмотрены в режиме реального времени[7].

Примеры программ

Программа Hello, world!

Стандартный минималистичный пример, дающий представление о PyQt. Программа показывает пустое окно, обладающее базовыми функциями — изменение размера, сворачивание, разворачивание:

#! /usr/bin/env python2
# -*- coding: utf-8 -*-
#
import sys
from PyQt4.QtGui import *  # компоненты интерфейса

# Каждое приложение должно создать объект QApplication
# sys.argv - список аргументов командной строки
application = QApplication(sys.argv)

# QWidget - базовый класс для всех объектов интерфейса
# пользователя; если использовать для виджета конструктор
# без родителя, такой виджет станет окном
widget = QWidget()

widget.resize(320, 240)  # изменить размеры виджета
widget.setWindowTitle("Hello, World!")  # установить заголовок
widget.show()  # отобразить окно на экране

sys.exit(application.exec_())  # запуск основного цикла приложения

Более сложный пример

В этом примере показаны принципы создания более серьёзных программ. Используется Python 3 и Qt Designer. Применяется объектно-ориентированный подход, позволяющий разделить визуальное представление и логику программы.

Состав программы:

  • test.pyw — главный файл, запускающий программу.
  • mainform.py — файл описания главного окна.
  • mainform.ui — файл, содержащий автоматически сгенерированное при помощи Qt Designer описание главного окна. В программе Qt Designer был создан проект, основанный на QDialog и выбраны 2 элемента: кнопка с именем pushButton, текстовая метка с именем label.

Содержание файла test.pyw:

#! /usr/bin/env python3
#
import sys
from PyQt4 import QtCore, QtGui  # подключает основные модули PyQt
import mainform  # подключает модуль описания формы

def main():
    app = QtGui.QApplication(sys.argv)  # создаёт основной объект программы
    form = mainform.MainForm()  # создаёт объект формы
    form.show()  # даёт команду на отображение объекта формы и содержимого
    app.exec()  # запускает приложение

if __name__ == "__main__":
    sys.exit(main())

Содержание файла mainform.py:

#! /usr/bin/env python3
#
from PyQt4 import QtCore, QtGui, uic  # подключает основные модули PyQt

# прототип главной формы
class MainForm(QtGui.QDialog):

    # конструктор
    def __init__(self):
        super(MainForm, self).__init__()

        # динамически загружает визуальное представление формы
        uic.loadUi("mainform.ui", self)

        # связывает событие нажатия на кнопку с методом
        self.connect(self.pushButton, QtCore.SIGNAL("clicked()"),
            self.setLabelText)

    def setLabelText(self):
        self.label.setText("New label text")

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

SIP

SIP — это инструмент для автоматической генерации Python-привязок к C и C++ библиотекам. Первоначально SIP был разработан в 1998 году для PyQt — Python-привязки для инструментария виджетов Qt, но подходит и для создания привязок к любым другим C или C++ библиотекам[8].

SIP берёт набор инструкций (.sip файлы), описывающих API и генерирует требуемый C++ код. Потом он компилируется и на выходе получается модуль Python. Файлы .sip — файлы заголовков класса, у которых кое-что убрано (потому что SIP не содержит полноценный C++-парсер) и кое-что добавлено (поскольку C++ не несёт достаточной информации о работе API).

Для PyQt4 используется внутренний инструмент (написанный на PyQt), называемый metasip. Это своего рода IDE для SIP. Он использует GCC-XML для разбора заголовочных файлов последней версии и сохраняет релевантные данные в XML, в metasip-проект. metasip далее делает некое подобие diff с предыдущей версией API и отмечает все изменения, которые необходимо просмотреть. Затем список изменений генерируется при помощи GUI и автоматически заносится в TODO. Создание .sip файлов — просто нажатие на кнопку.

Что касается работы сгенерированного кода, она не сильно отличается от работы любого другого генератора привязок. У Python очень хороший API модулей — это одна из причин большого количества Python-привязок для инструментов сторонних разработчиков. Для каждого C++-класса SIP генерирует C-код, создающий соответствующий Python-класс[9].

Особенности лицензирования

Двойная лицензия PyQt продиктована довольно сложными отношениями в сфере применения этой надстройки (привязки) над графической библиотекой Qt. В соответствии с лицензией GPL, возможно использование библиотеки для создания программ с открытым исходным кодом. Если нет возможности распространять код в соответствии с условиями GPL, то можно приобрести коммерческую лицензию[10].

Со стороны Nokia были попытки договориться с Riverbank Computing на предмет смены лицензии, но они не увенчались успехом. В результате возник проект под названием PySide[11] — аналог PyQt, в том числе сохраняющий совместимость с последним на уровне API, но выпущенный под лицензией LGPL, чтобы дать возможность разработчикам и коммерческих проектов бесплатно использовать Python в связке с Qt.

Однако Riverbank не исключает возможности лицензирования PyQt под LGPL в будущем.

История

Riverbank Computing Limited с 1998 года разрабатывает и поддерживает PyQt, привязки, которые позволяют использовать Qt для работы с языком программирования Python[1].

  • Разработка началась с создания SIP и выпуска PyQt 0.1 с поддержкой Qt 1.41 в ноябре 1998[12];
  • в версии 2.0, которая вышла в 2000, реализована поддержка Qt 2.2 на Linux и Windows[12];
  • поддержка Qt 3 реализована в 2001[12];
  • поддержка Mac OS X реализована в 2002[12];
  • выпуск PyQt4 начался с PyQt 4.0 с поддержкой Qt 4 в июне 2006[12];
  • в версии 4.5, которая вышла 5 июня 2009, реализована поддержка Python 3[13];
  • в версии 4.7, которая вышла 14 января 2010, реализована поддержка Qt 4.6[14];
  • в версии 5.0, которая вышла 17 июня 2013, реализована поддержка Qt 5.0[15].

Известные программы, использующие PyQt

Применение

PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как Disney, Dreamworks, Pixar, Industrial Light and Magic и Sony Pictures. Всего коммерческих пользователей более 200 (по данным в 2006 году)[9].

См. также

Напишите отзыв о статье "PyQt"

Примечания

  1. 1 2 [qt.nokia.com/services-partners/partners/partner-directory/riverbank-computing Riverbank Computing] (англ.). Сайт Nokia. Проверено 10 мая 2010. [www.webcitation.org/65uI4015X Архивировано из первоисточника 4 марта 2012].
  2. 1 2 [www.riverbankcomputing.com/software/pyqt/intro What is PyQt?] (англ.). Сайт PyQt. Проверено 10 мая 2010. [www.webcitation.org/65uI5zkoZ Архивировано из первоисточника 4 марта 2012].
  3. [www.riverbankcomputing.com/static/Docs/PyQt4/pyqt-whitepaper-a4.pdf PyQt Whitepaper] (англ.). Сайт PyQt. Проверено 10 мая 2010. [www.webcitation.org/65uI7uSIF Архивировано из первоисточника 4 марта 2012].
  4. [eric-ide.python-projects.org/ The Eric Python IDE] (англ.). Сайт Eric IDE. Проверено 10 мая 2010. [www.webcitation.org/65uI9JyVD Архивировано из первоисточника 4 марта 2012].
  5. [wiki.python.org/moin/PyQt About PyQt] (англ.). Python Wiki. Проверено 10 мая 2010. [www.webcitation.org/65uICUwfJ Архивировано из первоисточника 4 марта 2012].
  6. [wiki.python.org/moin/PyQt4 PyQt4] (англ.). Python Wiki. Проверено 10 мая 2010. [www.webcitation.org/65uMnGmU9 Архивировано из первоисточника 4 марта 2012].
  7. [qt.nokia.com/products/developer-tools/developer-tools?currentflipperobject=937ba3e952f85ef68ddbb7cb4b20fc19 GUI Designer] (англ.). Nokia. Проверено 10 мая 2010. [www.webcitation.org/65uMnrm5n Архивировано из первоисточника 4 марта 2012].
  8. [www.riverbankcomputing.com/static/Docs/sip4/introduction.html Introduction — SIP] (англ.). Сайт PyQt. Проверено 14 августа 2010. [www.webcitation.org/65uMosJoa Архивировано из первоисточника 4 марта 2012].
  9. 1 2 [dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt Phil Thompson Talks About PyQt] (англ.). KDE.news. Проверено 13 августа 2010. [www.webcitation.org/65uMpLuHw Архивировано из первоисточника 4 марта 2012].
  10. [www.riverbankcomputing.co.uk/software/pyqt/license License] (англ.). Сайт PyQt. Проверено 10 мая 2010. [www.webcitation.org/65uMpzkQx Архивировано из первоисточника 4 марта 2012].
  11. [www.pyside.org/faq/ PySide FAQ] (англ.). Сайт PySide. Проверено 10 мая 2010. [www.webcitation.org/65uMrB1Sw Архивировано из первоисточника 4 марта 2012].
  12. 1 2 3 4 5 Mark Summerfield. [www.qtrac.eu/pyqtbook.html Rapid GUI Programming with Python and Qt]. — 1st. — Prentice Hall, 2008. — 648 p. — ISBN 978-0132354189.
  13. [www.riverbankcomputing.com/news/pyqt-45 PyQt v4.5 Released] (англ.). Сайт PyQt. Проверено 10 мая 2010. [www.webcitation.org/65uMsmDDY Архивировано из первоисточника 4 марта 2012].
  14. [www.riverbankcomputing.com/news/pyqt-47 PyQt v4.7 Released] (англ.). Сайт PyQt. Проверено 10 мая 2010. [www.webcitation.org/65uMtxbn4 Архивировано из первоисточника 4 марта 2012].
  15. [www.riverbankcomputing.com/news/pyqt-50 PyQt v5.0 Released] (англ.). Сайт PyQt. Проверено 2 июля 2013. [www.webcitation.org/6HoWZe3iU Архивировано из первоисточника 2 июля 2013].

Литература

  • Прохоренок Н. А. Python 3 и PyQt. Разработка приложений. — СПб.: БХВ-Петербург, 2012. — С. 704. — ISBN 978-5-9775-0797-4.
  • Макс Шлее. [www.ozon.ru/context/detail/id/8752092/ Qt 4.8 Профессиональное программирование на C++]. — СПб.: «БХВ-Петербург», 2012. — С. 912. — ISBN 978-5-9775-0736-3.
  • Mark Summerfield. [www.qtrac.eu/pyqtbook.html Rapid GUI Programming with Python and Qt]. — 1st. — Prentice Hall, 2008. — P. 648. — ISBN 978-0132354189.
  • Boudewijn Rempt. [www.commandprompt.com/community/pyqt/ GUI Programming with Python: QT Edition]. — OpenDocs, 2002.
  • Ж. Бланшет, М. Саммерфилд. Qt 4: Программирование GUI на C++. 2-е дополненное издание. — М.: КУДИЦ-ПРЕСС, 2008. — С. 736. — ISBN 978-5-91136-059-7.

Ссылки

  • [www.riverbankcomputing.com/software/pyqt/intro Официальный сайт проекта]  (англ.)
  • [diotavelli.net/PyQtWiki Wiki сообщества PyQt и PyKDE]  (англ.)
  • [doc.qt.nokia.com/ Официальная документация по Qt]  (англ.)
    • [doc.crossplatform.ru Неофициальная документация по Qt на русском] (перевод в процессе)  (рус.)
  • [dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt Интервью с Филом Томпсоном — автором и разработчиком PyQt]  (англ.)
  • [wiki.python.org/moin/PyQt#PyQtapplications Приложения, использующие PyQt]  (англ.)
  • [pythonspot.com/pyqt4/ PyQT Tutorial] (англ.)

Отрывок, характеризующий PyQt

Ростов, не дослушав его, толкнул лошадь, выскакал вперед эскадрона, и не успел он еще скомандовать движение, как весь эскадрон, испытывавший то же, что и он, тронулся за ним. Ростов сам не знал, как и почему он это сделал. Все это он сделал, как он делал на охоте, не думая, не соображая. Он видел, что драгуны близко, что они скачут, расстроены; он знал, что они не выдержат, он знал, что была только одна минута, которая не воротится, ежели он упустит ее. Пули так возбудительно визжали и свистели вокруг него, лошадь так горячо просилась вперед, что он не мог выдержать. Он тронул лошадь, скомандовал и в то же мгновение, услыхав за собой звук топота своего развернутого эскадрона, на полных рысях, стал спускаться к драгунам под гору. Едва они сошли под гору, как невольно их аллюр рыси перешел в галоп, становившийся все быстрее и быстрее по мере того, как они приближались к своим уланам и скакавшим за ними французским драгунам. Драгуны были близко. Передние, увидав гусар, стали поворачивать назад, задние приостанавливаться. С чувством, с которым он несся наперерез волку, Ростов, выпустив во весь мах своего донца, скакал наперерез расстроенным рядам французских драгун. Один улан остановился, один пеший припал к земле, чтобы его не раздавили, одна лошадь без седока замешалась с гусарами. Почти все французские драгуны скакали назад. Ростов, выбрав себе одного из них на серой лошади, пустился за ним. По дороге он налетел на куст; добрая лошадь перенесла его через него, и, едва справясь на седле, Николай увидал, что он через несколько мгновений догонит того неприятеля, которого он выбрал своей целью. Француз этот, вероятно, офицер – по его мундиру, согнувшись, скакал на своей серой лошади, саблей подгоняя ее. Через мгновенье лошадь Ростова ударила грудью в зад лошади офицера, чуть не сбила ее с ног, и в то же мгновенье Ростов, сам не зная зачем, поднял саблю и ударил ею по французу.
В то же мгновение, как он сделал это, все оживление Ростова вдруг исчезло. Офицер упал не столько от удара саблей, который только слегка разрезал ему руку выше локтя, сколько от толчка лошади и от страха. Ростов, сдержав лошадь, отыскивал глазами своего врага, чтобы увидать, кого он победил. Драгунский французский офицер одной ногой прыгал на земле, другой зацепился в стремени. Он, испуганно щурясь, как будто ожидая всякую секунду нового удара, сморщившись, с выражением ужаса взглянул снизу вверх на Ростова. Лицо его, бледное и забрызганное грязью, белокурое, молодое, с дырочкой на подбородке и светлыми голубыми глазами, было самое не для поля сражения, не вражеское лицо, а самое простое комнатное лицо. Еще прежде, чем Ростов решил, что он с ним будет делать, офицер закричал: «Je me rends!» [Сдаюсь!] Он, торопясь, хотел и не мог выпутать из стремени ногу и, не спуская испуганных голубых глаз, смотрел на Ростова. Подскочившие гусары выпростали ему ногу и посадили его на седло. Гусары с разных сторон возились с драгунами: один был ранен, но, с лицом в крови, не давал своей лошади; другой, обняв гусара, сидел на крупе его лошади; третий взлеаал, поддерживаемый гусаром, на его лошадь. Впереди бежала, стреляя, французская пехота. Гусары торопливо поскакали назад с своими пленными. Ростов скакал назад с другими, испытывая какое то неприятное чувство, сжимавшее ему сердце. Что то неясное, запутанное, чего он никак не мог объяснить себе, открылось ему взятием в плен этого офицера и тем ударом, который он нанес ему.
Граф Остерман Толстой встретил возвращавшихся гусар, подозвал Ростова, благодарил его и сказал, что он представит государю о его молодецком поступке и будет просить для него Георгиевский крест. Когда Ростова потребовали к графу Остерману, он, вспомнив о том, что атака его была начата без приказанья, был вполне убежден, что начальник требует его для того, чтобы наказать его за самовольный поступок. Поэтому лестные слова Остермана и обещание награды должны бы были тем радостнее поразить Ростова; но все то же неприятное, неясное чувство нравственно тошнило ему. «Да что бишь меня мучает? – спросил он себя, отъезжая от генерала. – Ильин? Нет, он цел. Осрамился я чем нибудь? Нет. Все не то! – Что то другое мучило его, как раскаяние. – Да, да, этот французский офицер с дырочкой. И я хорошо помню, как рука моя остановилась, когда я поднял ее».
Ростов увидал отвозимых пленных и поскакал за ними, чтобы посмотреть своего француза с дырочкой на подбородке. Он в своем странном мундире сидел на заводной гусарской лошади и беспокойно оглядывался вокруг себя. Рана его на руке была почти не рана. Он притворно улыбнулся Ростову и помахал ему рукой, в виде приветствия. Ростову все так же было неловко и чего то совестно.
Весь этот и следующий день друзья и товарищи Ростова замечали, что он не скучен, не сердит, но молчалив, задумчив и сосредоточен. Он неохотно пил, старался оставаться один и о чем то все думал.
Ростов все думал об этом своем блестящем подвиге, который, к удивлению его, приобрел ему Георгиевский крест и даже сделал ему репутацию храбреца, – и никак не мог понять чего то. «Так и они еще больше нашего боятся! – думал он. – Так только то и есть всего, то, что называется геройством? И разве я это делал для отечества? И в чем он виноват с своей дырочкой и голубыми глазами? А как он испугался! Он думал, что я убью его. За что ж мне убивать его? У меня рука дрогнула. А мне дали Георгиевский крест. Ничего, ничего не понимаю!»
Но пока Николай перерабатывал в себе эти вопросы и все таки не дал себе ясного отчета в том, что так смутило его, колесо счастья по службе, как это часто бывает, повернулось в его пользу. Его выдвинули вперед после Островненского дела, дали ему батальон гусаров и, когда нужно было употребить храброго офицера, давали ему поручения.


Получив известие о болезни Наташи, графиня, еще не совсем здоровая и слабая, с Петей и со всем домом приехала в Москву, и все семейство Ростовых перебралось от Марьи Дмитриевны в свой дом и совсем поселилось в Москве.
Болезнь Наташи была так серьезна, что, к счастию ее и к счастию родных, мысль о всем том, что было причиной ее болезни, ее поступок и разрыв с женихом перешли на второй план. Она была так больна, что нельзя было думать о том, насколько она была виновата во всем случившемся, тогда как она не ела, не спала, заметно худела, кашляла и была, как давали чувствовать доктора, в опасности. Надо было думать только о том, чтобы помочь ей. Доктора ездили к Наташе и отдельно и консилиумами, говорили много по французски, по немецки и по латыни, осуждали один другого, прописывали самые разнообразные лекарства от всех им известных болезней; но ни одному из них не приходила в голову та простая мысль, что им не может быть известна та болезнь, которой страдала Наташа, как не может быть известна ни одна болезнь, которой одержим живой человек: ибо каждый живой человек имеет свои особенности и всегда имеет особенную и свою новую, сложную, неизвестную медицине болезнь, не болезнь легких, печени, кожи, сердца, нервов и т. д., записанных в медицине, но болезнь, состоящую из одного из бесчисленных соединений в страданиях этих органов. Эта простая мысль не могла приходить докторам (так же, как не может прийти колдуну мысль, что он не может колдовать) потому, что их дело жизни состояло в том, чтобы лечить, потому, что за то они получали деньги, и потому, что на это дело они потратили лучшие годы своей жизни. Но главное – мысль эта не могла прийти докторам потому, что они видели, что они несомненно полезны, и были действительно полезны для всех домашних Ростовых. Они были полезны не потому, что заставляли проглатывать больную большей частью вредные вещества (вред этот был мало чувствителен, потому что вредные вещества давались в малом количестве), но они полезны, необходимы, неизбежны были (причина – почему всегда есть и будут мнимые излечители, ворожеи, гомеопаты и аллопаты) потому, что они удовлетворяли нравственной потребности больной и людей, любящих больную. Они удовлетворяли той вечной человеческой потребности надежды на облегчение, потребности сочувствия и деятельности, которые испытывает человек во время страдания. Они удовлетворяли той вечной, человеческой – заметной в ребенке в самой первобытной форме – потребности потереть то место, которое ушиблено. Ребенок убьется и тотчас же бежит в руки матери, няньки для того, чтобы ему поцеловали и потерли больное место, и ему делается легче, когда больное место потрут или поцелуют. Ребенок не верит, чтобы у сильнейших и мудрейших его не было средств помочь его боли. И надежда на облегчение и выражение сочувствия в то время, как мать трет его шишку, утешают его. Доктора для Наташи были полезны тем, что они целовали и терли бобо, уверяя, что сейчас пройдет, ежели кучер съездит в арбатскую аптеку и возьмет на рубль семь гривен порошков и пилюль в хорошенькой коробочке и ежели порошки эти непременно через два часа, никак не больше и не меньше, будет в отварной воде принимать больная.
Что же бы делали Соня, граф и графиня, как бы они смотрели на слабую, тающую Наташу, ничего не предпринимая, ежели бы не было этих пилюль по часам, питья тепленького, куриной котлетки и всех подробностей жизни, предписанных доктором, соблюдать которые составляло занятие и утешение для окружающих? Чем строже и сложнее были эти правила, тем утешительнее было для окружающих дело. Как бы переносил граф болезнь своей любимой дочери, ежели бы он не знал, что ему стоила тысячи рублей болезнь Наташи и что он не пожалеет еще тысяч, чтобы сделать ей пользу: ежели бы он не знал, что, ежели она не поправится, он не пожалеет еще тысяч и повезет ее за границу и там сделает консилиумы; ежели бы он не имел возможности рассказывать подробности о том, как Метивье и Феллер не поняли, а Фриз понял, и Мудров еще лучше определил болезнь? Что бы делала графиня, ежели бы она не могла иногда ссориться с больной Наташей за то, что она не вполне соблюдает предписаний доктора?
– Эдак никогда не выздоровеешь, – говорила она, за досадой забывая свое горе, – ежели ты не будешь слушаться доктора и не вовремя принимать лекарство! Ведь нельзя шутить этим, когда у тебя может сделаться пневмония, – говорила графиня, и в произношении этого непонятного не для нее одной слова, она уже находила большое утешение. Что бы делала Соня, ежели бы у ней не было радостного сознания того, что она не раздевалась три ночи первое время для того, чтобы быть наготове исполнять в точности все предписания доктора, и что она теперь не спит ночи, для того чтобы не пропустить часы, в которые надо давать маловредные пилюли из золотой коробочки? Даже самой Наташе, которая хотя и говорила, что никакие лекарства не вылечат ее и что все это глупости, – и ей было радостно видеть, что для нее делали так много пожертвований, что ей надо было в известные часы принимать лекарства, и даже ей радостно было то, что она, пренебрегая исполнением предписанного, могла показывать, что она не верит в лечение и не дорожит своей жизнью.
Доктор ездил каждый день, щупал пульс, смотрел язык и, не обращая внимания на ее убитое лицо, шутил с ней. Но зато, когда он выходил в другую комнату, графиня поспешно выходила за ним, и он, принимая серьезный вид и покачивая задумчиво головой, говорил, что, хотя и есть опасность, он надеется на действие этого последнего лекарства, и что надо ждать и посмотреть; что болезнь больше нравственная, но…
Графиня, стараясь скрыть этот поступок от себя и от доктора, всовывала ему в руку золотой и всякий раз с успокоенным сердцем возвращалась к больной.
Признаки болезни Наташи состояли в том, что она мало ела, мало спала, кашляла и никогда не оживлялась. Доктора говорили, что больную нельзя оставлять без медицинской помощи, и поэтому в душном воздухе держали ее в городе. И лето 1812 года Ростовы не уезжали в деревню.
Несмотря на большое количество проглоченных пилюль, капель и порошков из баночек и коробочек, из которых madame Schoss, охотница до этих вещиц, собрала большую коллекцию, несмотря на отсутствие привычной деревенской жизни, молодость брала свое: горе Наташи начало покрываться слоем впечатлений прожитой жизни, оно перестало такой мучительной болью лежать ей на сердце, начинало становиться прошедшим, и Наташа стала физически оправляться.


Наташа была спокойнее, но не веселее. Она не только избегала всех внешних условий радости: балов, катанья, концертов, театра; но она ни разу не смеялась так, чтобы из за смеха ее не слышны были слезы. Она не могла петь. Как только начинала она смеяться или пробовала одна сама с собой петь, слезы душили ее: слезы раскаяния, слезы воспоминаний о том невозвратном, чистом времени; слезы досады, что так, задаром, погубила она свою молодую жизнь, которая могла бы быть так счастлива. Смех и пение особенно казались ей кощунством над ее горем. О кокетстве она и не думала ни раза; ей не приходилось даже воздерживаться. Она говорила и чувствовала, что в это время все мужчины были для нее совершенно то же, что шут Настасья Ивановна. Внутренний страж твердо воспрещал ей всякую радость. Да и не было в ней всех прежних интересов жизни из того девичьего, беззаботного, полного надежд склада жизни. Чаще и болезненнее всего вспоминала она осенние месяцы, охоту, дядюшку и святки, проведенные с Nicolas в Отрадном. Что бы она дала, чтобы возвратить хоть один день из того времени! Но уж это навсегда было кончено. Предчувствие не обманывало ее тогда, что то состояние свободы и открытости для всех радостей никогда уже не возвратится больше. Но жить надо было.
Ей отрадно было думать, что она не лучше, как она прежде думала, а хуже и гораздо хуже всех, всех, кто только есть на свете. Но этого мало было. Она знала это и спрашивала себя: «Что ж дальше?А дальше ничего не было. Не было никакой радости в жизни, а жизнь проходила. Наташа, видимо, старалась только никому не быть в тягость и никому не мешать, но для себя ей ничего не нужно было. Она удалялась от всех домашних, и только с братом Петей ей было легко. С ним она любила бывать больше, чем с другими; и иногда, когда была с ним с глазу на глаз, смеялась. Она почти не выезжала из дому и из приезжавших к ним рада была только одному Пьеру. Нельзя было нежнее, осторожнее и вместе с тем серьезнее обращаться, чем обращался с нею граф Безухов. Наташа Осссознательно чувствовала эту нежность обращения и потому находила большое удовольствие в его обществе. Но она даже не была благодарна ему за его нежность; ничто хорошее со стороны Пьера не казалось ей усилием. Пьеру, казалось, так естественно быть добрым со всеми, что не было никакой заслуги в его доброте. Иногда Наташа замечала смущение и неловкость Пьера в ее присутствии, в особенности, когда он хотел сделать для нее что нибудь приятное или когда он боялся, чтобы что нибудь в разговоре не навело Наташу на тяжелые воспоминания. Она замечала это и приписывала это его общей доброте и застенчивости, которая, по ее понятиям, таковая же, как с нею, должна была быть и со всеми. После тех нечаянных слов о том, что, ежели бы он был свободен, он на коленях бы просил ее руки и любви, сказанных в минуту такого сильного волнения для нее, Пьер никогда не говорил ничего о своих чувствах к Наташе; и для нее было очевидно, что те слова, тогда так утешившие ее, были сказаны, как говорятся всякие бессмысленные слова для утешения плачущего ребенка. Не оттого, что Пьер был женатый человек, но оттого, что Наташа чувствовала между собою и им в высшей степени ту силу нравственных преград – отсутствие которой она чувствовала с Kyрагиным, – ей никогда в голову не приходило, чтобы из ее отношений с Пьером могла выйти не только любовь с ее или, еще менее, с его стороны, но даже и тот род нежной, признающей себя, поэтической дружбы между мужчиной и женщиной, которой она знала несколько примеров.