Главная страница

ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница78 из 83
1   ...   75   76   77   78   79   80   81   82   83
 onPrint()
выполняет печать головоломки;
 onPreview()
— выводит на экран созданное ранее окно предварительного просмотра;
 onPageSetup()
— производит настройку параметров страницы.
Поскольку предварительный просмотр у нас будет выполняться в только что созданном окне
PreviewDialog
, нам следует добавить в самое начало кода класса
MainWindow выраже- ние, выполняющее импорт класса
PreviewDialog
: from modules.previewdialog import PreviewDialog
Дополнения, которые следует внести в код конструктора класса
MainWindow
, показаны в листинге 32.26 (добавленный код, как обычно, выделен полужирным шрифтом).
Листинг 32.26. Конструктор (дополнения) def __init__(self, parent=None): action = myMenuFile.addAction("&Сохранить компактно...", self.onSaveMini) action.setStatusTip(
"Сохранение головоломки в компактном формате") myMenuFile.addSeparator() toolBar.addSeparator() action = myMenuFile.addAction(QtGui.QIcon(r"images/print.png"),
"&Печать...", self.onPrint,
QtCore.Qt.CTRL + QtCore.Qt.Key_P) toolBar.addAction(action) action.setStatusTip("Печать головоломки") action = myMenuFile.addAction(QtGui.QIcon(r"images/preview.png"),
"П&редварительный просмотр...", self.onPreview) toolBar.addAction(action) action.setStatusTip("Предварительный просмотр головоломки")

786
Часть II. Библиотека PyQt 5 action = myMenuFile.addAction("П&араметры страницы...", self.onPageSetup) action.setStatusTip("Задание параметров страницы") myMenuFile.addSeparator() toolBar.addSeparator() action = myMenuFile.addAction("&Выход", QtWidgets.qApp.quit,
QtCore.Qt.CTRL + QtCore.Qt.Key_Q)
Между пунктами главного меню, вызывающими файловые операции, мы вставляем разде- литель и пункты Печать, Предварительный просмотр и Параметры страницы. Не забы- ваем добавить соответствующие кнопки на панель инструментов.
Листинг 32.27. Методы onPrint(), onPreview() и onPageSetup() def onPrint(self): pd = QtPrintSupport.QPrintDialog(self.printer, parent=self) pd.setOptions(QtPrintSupport.QAbstractPrintDialog.PrintToFile |
QtPrintSupport.QAbstractPrintDialog.PrintSelection) if pd.exec() == QtWidgets.QDialog.Accepted: self.sudoku.print(self.printer) def onPreview(self): pd = PreviewDialog(self) pd.exec() def onPageSetup(self): pd = QtPrintSupport.QPageSetupDialog(self.printer, parent=self) pd.exec()
Код методов onPrint()
, onPreview()
и onPageSetup()
, производящих печать, предваритель- ный просмотр и настройку страницы, очень прост (листинг 32.27). Единственная деталь, достойная рассмотрения: в диалоговом окне печати мы задаем только возможность указа- ния печати в файл и выбора принтера, на котором будет выполняться печать. Остальные параметры, в частности выбор печатаемых страниц, в нашем случае не нужны.
Запустим приложение, создадим какую-либо головоломку и проверим, как работает печать, предварительный просмотр и настройка параметров страницы.
На этом работу над приложением «Судоку» можно считать завершенной. Собственно, по- дошел конец и книге, посвященной замечательному языку Python и не менее замечательной библиотеке PyQt.

Заключение
Вот и закончилось наше путешествие в мир Python 3 и PyQt 5. Материал книги описывает лишь базовые возможности этих замечательных программных платформ. А здесь мы рас- скажем, где найти дополнительную информацию, чтобы продолжить изучение.
Самыми важными источниками информации являются официальные сайты https://www. python.org/ и https://riverbankcomputing.com/ — на них вы найдете дистрибутивы, ново- сти, а также ссылки на все другие ресурсы в Интернете.
На сайте https://docs.python.org/ имеется документация по Python, которая обновляется в режиме реального времени. Язык постоянно совершенствуется, появляются новые функции, изменяются параметры, добавляются модули и т. д. Регулярно посещайте этот сайт, и вы получите самую последнюю информацию.
Поскольку библиотека PyQt является надстройкой над библиотекой Qt, следует регулярно наведываться на сайт https://doc.qt.io/ — только там можно найти полную документацию по Qt.
В пакет установки Python входит большое количество модулей, позволяющих выполнять наиболее часто встречающиеся задачи. Однако этим возможности Python не исчерпывают- ся — мир Python включает множество самых разнообразных модулей и целых библиотек, созданных сторонними разработчиками и доступных для свободного скачивания, — вы лег- ко найдете их на сайте https://pypi.python.org/pypi. Имейте только в виду, что при выборе модуля необходимо учитывать версию Python, которая обычно указывается в составе назва- ния дистрибутива.
Особенно необходимо отметить библиотеку PySide (https://wiki.qt.io/PySide), созданную специалистами компании Nokia, а ныне поддерживаемую независимыми разработчиками.
Эта библиотека является полным аналогом PyQt и распространяется по лицензии LGPL.
Не забывайте также о существовании других библиотек для создания графического интер- фейса: wxPython (https://www.wxpython.org/), PyGTK (http://www.pygtk.org/), PyWin32
(https://github.com/mhammond/pywin32) и pyFLTK (http://pyfltk.sourceforge.net/). Обратите внимание и на библиотеку pygame (http://www.pygame.org/), позволяющую разрабатывать игры, и на фреймворк Django (https://www.djangoproject.com/), с помощью которого мож- но создавать веб-сайты.
Если в процессе изучения у вас возникнут какие-либо вопросы, вспомните, что в Интернете можно найти решения самых разнообразных проблем, — достаточно лишь набрать свой вопрос в строке запроса того или иного поискового портала (например, https://www. bing.com/ или https://www.google.ru/).
Засим авторы прощаются с вами, уважаемые читатели, и желают успехов в нелегком, но таком увлекательном деле, как программирование!

788
Заключение

ПРИЛОЖЕН ИЕ
Описание электронного архива
Электронный архив с материалами, сопровождающими книгу, можно скачать с FTP-сервера издательства по ссылке ftp://ftp.bhv.ru/9785977539784.zip или со страницы книги на сайте www.bhv.ru.
Структура архива представлена в табл. П.1.
Таблица П.1. Структура электронного архива
Файл или каталог
Описание
Sudoku
Каталог с исходными текстами приложения «Судоку»
Readme.txt
Описание электронного архива
Listings.doc
Все листинги, представленные в книге
PyQt.doc
Более 750 дополнительных листингов, демонстрирующих возможности библиотеки PyQt 5 (к части II книги)

790
Введение

Предметный указатель
@
@abc 263
@abstractmethod 259, 263
@classmethod 258
@staticmethod 258
_
__abs__() 256
__add__() 255
__all__ 236, 241
__and__() 256
__annotations__ 230
__bases__ 251
__bool__() 254
__call__() 253
__cause__ 275
__class__ 286
__complex__() 254
__contains__() 257, 279
__debug__ 276
__del__() 248
__delattr__() 254
__delitem__() 279
__dict__ 234, 254
__doc__ 38, 39, 85
__enter__() 269
__eq__() 257
__exit__() 269, 270
__file__ 290
__float__() 254
__floordiv__() 256
__ge__() 257
__getattr__() 253, 260
__getattribute__() 254, 260
__getitem__() 278, 279
__gt__() 257
__hash__() 255
__iadd__() 255
__iand__() 257
__ifloordiv__() 256
__ilshift__() 257
__imod__() 256
__import__() 234
__imul__() 256
__index__() 254
__init__() 247
__int__() 254
__invert__() 256
__ior__() 257
__ipow__() 256
__irshift__() 257
__isub__() 255
__iter__() 278
__itruediv__() 256
__ixor__() 257
__le__() 257
__len__() 254, 278
__lshift__() 257
__lt__() 257
__mod__() 256
__mro__ 252
__mul__() 255
__name__ 231, 286
__ne__() 257
__neg__() 256
__next__() 44, 220, 273, 278, 296, 304
__or__() 257
__pos__() 256
__pow__() 256
__radd__() 255
__rand__() 257
__repr__() 255, 278
__rfloordiv__() 256
__rlshift__() 257

792 Предметный указатель
__rmod__() 256
__rmul__() 255
__ror__() 257
__round__() 254
__rpow__() 256
__rrshift__() 257
__rshift__() 257
__rsub__() 255
__rtruediv__() 256
__rxor__() 257
__setattr__() 254, 260
__setitem__() 279
__slots__ 261
__str__() 255, 278
__sub__() 255
__truediv__() 256
__xor__() 257
A
A0 709
A1 709
A2 709
A3 709
A4 709
A5 709
AA_UseStyleSheetPropagationInWidgetStyles
393 abc 259
Abort 617, 620
Aborted 722 about() 625 aboutQt() 625 aboutToActivate 672 aboutToHide 657 aboutToShow 657 abs() 76, 190, 256
AbsoluteSize 568 abspath() 288, 290, 310
Accept 634 accept() 349, 390, 407, 420, 421, 424, 429,
430, 607, 610, 615, 616 accepted 616, 619
Accepted 615, 616, 626, 632 acceptHoverEvents() 609
AcceptOpen 632 acceptProposedAction() 429, 430, 610, 611 acceptRichText() 470
AcceptRole 618, 619, 621
AcceptSave 632 access() 306
AccessDeniedError 677, 688
AccessError 750
AccessibleDescriptionRole 503
AccessibleTextRole 502 accumulate() 173 acos() 78 actionChanged() 427 actionGroup() 660
ActionRole 618, 621 actions() 657, 661 actionTriggered 491, 664 activated 487, 501, 516, 673 activateNextSubWindow() 669 activatePreviousSubWindow() 669 activateWindow() 379, 616
ActivationChange 409
ActivationHistoryOrder 669 activationOrder() 669
Active 384, 722 activeAction() 654, 656
ActivePython 23 activeSubWindow() 669
ActiveWindowFocusReason 414 actualSize() 582 add() 165 addAction() 654, 657, 661, 663 addActions() 657 addBindValue() 539, 540 addButton() 617, 621, 735 addCategory() 730 addDatabase() 532 addDestination() 731 addDockWidget() 650 addEllipse() 585 addFile() 581 addItem() 453, 498, 584, 731 addItems() 498 addLayout() 437, 440 addLine() 584 addLink() 731 addMedia() 686 addMenu() 653, 655 addPage() 642 addPath() 585 addPermanentWidget() 667 addPixmap() 582, 585 addPolygon() 585 addRect() 585 addRow() 442 addSection() 655 addSeparator() 655, 663, 732 addSimpleText() 585 addSpacing() 437

Предметный указатель
793 addStretch() 437 addSubWindow() 668 addTab() 449 addText() 585 addToGroup() 603 addToolBar() 649 addToolBarBreak() 650
AddToSelection 588 addWidget() 330, 436, 437, 439, 443, 455,
585, 663, 667
Adjust 517 adjust() 377 adjusted() 377 adjustSize() 366
AdjustToContents 500
AdjustToContentsOnFirstShow 500
AdjustToMinimumContentsLength 500
AdjustToMinimumContentsLengthWithIcon
500
AeroStyle 644
AlignAbsolute 438
AlignBaseline 438
AlignBottom 359, 438, 570
AlignCenter 359, 438, 570
AlignHCenter 332, 359, 437, 447, 570
AlignJustify 438
AlignLeft 359, 437, 438, 447, 570 alignment() 447, 474
AlignRight 359, 437, 438, 447, 570
AlignTop 359, 438, 570
AlignVCenter 359, 438, 570 all() 157
AllDockWidgetAreas 666
AllEditTriggers 515
AllFonts 502 allKeys() 747
AllLayers 589
AllNonFixedFieldsGrow 443
AllowNestedDocks 650, 651
AllowTabbedDocks 651
AllPages 702
AllPagesView 720
AllTables 534
AllToolBarAreas 663 alpha() 557, 558, 559 alphaF() 558, 559
AltModifier 419
AmPmSection 485 anchorClicked 481 and 61 angleDelta() 423 animateClick() 461
AnimatedDocks 650 answerRect() 430
Antialiasing 569, 591 any() 156
AnyFile 632
AnyKeyPressed 515 append() 117, 142, 143, 153, 470, 563 appendColumn() 507, 511 appendRow() 507, 511 appendRows() 511
ApplicationActivate 409
ApplicationDeactivate 409
ApplicationModal 382, 616 applicationName() 744
ApplicationShortcut 417, 659
Apply 617, 620
ApplyRole 618, 621 arguments() 733 argv 36, 329
ArrowCursor 424 as 233, 235, 240, 269 as_integer_ratio() 77
AscendingOrder 506, 509, 513, 520, 522, 527,
544, 546, 587
ASCII 123, 127 ascii() 96, 100 asctime() 187 asin() 78 assert 272, 276
AssertionError 272, 276 at() 541 atan() 78 atBlockEnd() 479 atBlockStart() 479 atEnd() 479 atStart() 479
AttributeError 232, 245, 254, 261, 272 audioInputs() 690
Auto 702
AutoAll 473
AutoBulletList 472
AutoConnection 398
AutoNone 472
AutoText 459, 621, 644 availableGeometry() 369, 370 availableMetaData() 678 availablePrinterNames() 721 availablePrinters() 721 availableRedoSteps() 475 availableSizes() 582 availableUndoSteps() 475
AverageBitRateEncoding 693

794 Предметный указатель
B back() 494, 643
BackButton 421, 644
Background 384 backgroundColor() 497
BackgroundLayer 589
BackgroundPixmap 645
BackgroundRole 502 backspace() 464
BacktabFocusReason 414 backward() 480 backwardAvailable 481 backwardHistoryCount() 481
BannerPixmap 645
BaseException 272 basename() 311 baseSize() 366
Batched 518 beforeDelete 549 beforeInsert 549 beforeUpdate 549 begin() 566, 703 beginEditBlock() 480 beginGroup() 747 beginReadArray() 749 beginWriteArray() 748
BevelJoin 560
Bin 489 bin() 75, 254 bindValue() 539, 540 black 359, 556
Black 473, 476, 564 black() 558 blackF() 558 blake2b() 121 blake2s() 121 block() 479 blockCount() 476 blockCountChanged 477
BlockingIOError 324
BlockingQueuedConnection 398 blockNumber() 479 blockSignals() 399
BlockUnderCursor 479 blue 556 blue() 557 blueF() 558 blurRadius() 604, 605 blurRadiusChanged 605
Bold 473, 476, 564 bold() 565
BOM 27, 292 bool 41
Bool 536 bool() 48, 59, 254 bottom() 377
BottomDockWidgetArea 650, 652, 666 bottomLeft() 377
BottomLeftCorner 652 bottomRight() 377
BottomRightCorner 652
BottomToolBarArea 649, 663
BottomToTop 438, 490 boundedTo() 373 boundingRect() 564, 566, 570, 594
BoundingRectShape 601 boundValue() 543 boundValues() 543
Box 448 break 66, 70, 71 brightness() 684 bspTreeDepth() 584
BspTreeIndex 584 buffer 299
BufferedMedia 676
BufferingMedia 676 bufferStatus() 676 bufferStatusChanged 679 builtins 37
BusyCursor 424 button() 421, 422, 608, 618, 622, 644 buttonClicked 622 buttonDownPos() 608 buttonDownScenePos() 608 buttonDownScreenPos() 608 buttonRole() 618, 622 buttons() 421, 423, 608, 610, 611, 618,
622, 736 buttonText() 644, 646
Byte Order Mark 27, 292 bytearray 42, 83, 112, 116
ByteArray 536 bytearray() 49, 116 bytes 42, 83, 112 bytes() 49, 112, 113
BytesIO 305
C
CacheBackground 590
CacheNone 590 calendar 184, 201
Calendar 201

Предметный указатель
795 calendar() 206
Cancel 617, 619 cancel() 642
CancelButton 644
CancelButtonOnLeft 645 canceled 642 canPaste() 470 capitalize() 105 cascadeSubWindows() 669 casefold() 105
CaseInsensitive 475, 527, 528
CaseSensitive 527, 528 categories() 731 ceil() 78 cellRect() 440 center() 94, 377, 562 centerOn() 593 centralWidget() 649 chain() 173 changed 589, 661 changeEvent() 410 changeOverrideCursor() 424
Char 536 characterCount() 476 chdir() 290, 319 checkBox() 622
Checked 463, 502, 512 checkedAction() 661 checkOverflow() 488 checkState() 463, 512
CheckStateRole 502 child() 504, 512
ChildAdded 409 childGroups() 747 childItems() 597 childKeys() 745
ChildPolished 409
ChildRemoved 409 chmod() 307 choice() 80, 157 chr() 105
Cicero 701, 704, 709, 723 class 244
ClassicStyle 643–645 cleanText() 483 cleanupPage() 643, 645, 647
Clear 526 clear() 155, 166, 182, 318, 428, 431, 450,
460, 464, 470, 474, 482, 499, 508, 543,
564, 578, 585, 619, 654, 655, 663, 686,
731, 732, 736, 745
ClearAndSelect 526 clearEditText() 500 clearFocus() 414, 587, 596 clearHistory() 481 clearMessage() 359, 667 clearOverlayIcon() 726 clearSelection() 479, 514, 526, 588 clearSpans() 519 clearUndoRedoStacks() 475 clearValues() 548 click() 403, 462, 737 clicked 447, 461, 462, 488, 516, 619, 737 clicked() 330 clickedButton() 622
ClickFocus 415
Clipboard 408 clipboard() 431 clone() 513 cloneDatabase() 534
Close 390, 408, 617, 620, 659 close() 294, 301, 302, 317, 390, 413, 534 closeActiveSubWindow() 669 closeAllSubWindows() 669 closeAllWindows() 390 closed 298, 302
ClosedHandCursor 424 closeEvent() 390, 413 cmath 77
Cmyk 559
CoarseTimer 404 collapse() 522 collapseAll() 522 collapsed 522 collateCopies() 701 collidesWithItem() 598 collidingItems() 586, 597
Color 702 color() 604, 606 color0 556, 577 color1 556, 577 colorChanged 605, 606 colorCount() 704 colorMode() 702 colorNames() 556 column() 504, 510 columnCount() 440, 507, 510 columnIntersectsSelection() 525
Columns 526 columnSpan() 519 columnWidth() 519, 521 combinations() 169 combinations_with_replacement() 170 combine() 198

796 Предметный указатель commit() 533
CommitButton 644 compile() 122, 131, 132, 136, 137 completeChanged 647
CompleteHtmlSaveFormat 496 complex 42, 73 complex() 254 compress() 171 connect() 330, 395, 398, 403
ConnectionError 324, 537 connectionName() 533 connectionNames() 534
ConstantBitRateEncoding 693
ConstantQualityEncoding 692 contains() 378, 534, 535, 597, 745
ContainsItemBoundingRect 586–588, 591
ContainsItemShape 586–588, 591 contentsChange 477 contentsChanged 477 contentsSize() 496
Context 673
ContextMenu 409 contextMenu() 672 contextMenuEvent() 466, 470, 657
ContiguousSelection 514 continue 71 contrast() 684
ControlModifier 419 convertFromImage() 576 convertTo() 559 convertToFormat() 580 copy 144, 177, 183
Copy 419, 659 copy() 144, 165, 167, 177, 183, 307, 466, 470,
576, 580 copy2() 308
CopyAction 426 copyAvailable 471 copyCount() 701 copyfile() 307 corner() 652 cos() 77 count() 69, 106, 156, 168, 444, 451, 454, 456,
499, 523, 535, 564, 732, 736
CoverWindow 364 createEditor() 528 createItemGroup() 585, 603 createMaskFromColor() 576 createPopupMenu() 649 createStandardContextMenu() 466, 470
CreationOrder 669
Critical 619, 673 critical() 624
CrossCursor 424
CrossPattern 386, 561 cssclasses 204 ctime() 187, 193, 200
1   ...   75   76   77   78   79   80   81   82   83


написать администратору сайта