Π Π°Π·Π½ΠΎΠ΅

Pyqt install windows: python — How to install PyQt5 on Windows?

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5 Π² Windows?

Вопрос:

Когда я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5 Π½Π° Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

python configure.py

Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Error: Make sure you have a working Qt qmake on your PATH.

Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» pyQt5 ΠΎΡ‚ PyQt5 Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ.

Как я ΠΌΠΎΠ³Ρƒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5?


ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ:

Π― установил Qt 5.0.2 for Windows 64-bit (VS 2012, 500 MB) со страницы Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Qt, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ мСня появляСтся эта ошибка:

Querying qmake about your Qt installation...
Determining the details of your Qt installation...
Error: Failed to determine the detail of your Qt installation. Try again using
the --verbose flag to see more detail about the problem.

И ΠΊΠΎΠ³Π΄Π° я Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ python configure.py --verbose:

Querying qmake about your Qt installation...
Determining the details of your Qt installation...
C:\Qt\Qt5.0.2\5.0.2\msvc2012_64\bin\qmake.exe -spec win32-msvc2008 -o qtdetail.m
k qtdetail.pro
nmake -f qtdetail.mk release
'nmake' nΓ£o Γ© reconhecido como um comando interno
ou externo, um programa operΓ‘vel ou um arquivo em lotes.
Error: Failed to determine the detail of your Qt installation. Try again using
the --verbose flag to see more detail about the problem.

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin (содСрТит nmake.exe) Π² PATH ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» эту ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Querying qmake about your Qt installation...
Determining the details of your Qt installation...
C:\Qt\Qt5.0.2\5.0.2\msvc2012_64\bin\qmake.exe -spec win32-msvc2008 -o qtdetail.mk qtdetail.pro
nmake -f qtdetail.mk release


Microsoft (R) Program Maintenance Utility Version 11.00.50727.1

Copyright (C) Microsoft Corporation.  All rights reserved.


"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\nmake.exe" -f qtdetail.mk.Release


Microsoft (R) Program Maintenance Utility Version 11.00.50727.1

Copyright (C) Microsoft Corporation.  All rights reserved.

cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_CORE_LIB -I"..\..\..\..\..\..\..\Qt\Qt5.0.2\5.0.2\msvc2012_64\include" -I"..\..\..\..\..\..\..\Qt\Qt5.0.2\5.0.2\msvc2012_64\include\QtCore" -I"release" -I"..\..\..\..\..\..\..\Qt\Qt5.0.2\5.0.2\msvc2012_64\mkspecs\win32-msvc2008" -Forelease\ @C:\Users\Victor\AppData\Local\Temp\nm68EA.tmp

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.EXE"' : return code '0xc0000135'

Stop.

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\nmake.exe"' : return code '0x2'

Stop.

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚:

Π‘Π°ΠΌΡ‹ΠΉ простой способ установки PyQt β€” просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ установщик (ссылка Π² вашСм ΠΎΡ‚Π²Π΅Ρ‚Π΅, шаг β„– 5). Если Π²Ρ‹ установитС python 3.3, установщик автоматичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ всС дополнСния PyQt5 ΠΊ этой установкС python. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ (Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·: nmake, nmake install, python configure).

ВсС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ сборки доступны, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ установка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с использованиСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ вСрсии python, Π³Π΄Π΅ Π½Π΅Ρ‚ установщика, прСдоставляСмого вычислСниями Π½Π° Π±Π΅Ρ€Π΅Π³Ρƒ Ρ€Π΅ΠΊΠΈ).

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ PyQt5, шаги (ΠΊΠ°ΠΊ Π²Ρ‹ нашли) здСсь, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ python ΠΈ установлСн компилятор ΠΈ Π½Π° вашСм ΠΏΡƒΡ‚ΠΈ. УстановлСнныС ΠΈ Π½Π° вашСм ΠΏΡƒΡ‚ΠΈ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. Π― Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ установщика, Π½ΠΎ сначала Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ python 3.3.

ΠžΡ‚Π²Π΅Ρ‚ β„–1

Π’ основном я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ cmd

pip install pyqt5

И ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ!

ΠžΡ‚Π²Π΅Ρ‚ β„–2

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ это Π² ΠΎΠΊΠ½Π΅ Windows cmd:

pip3 install pyqt5

Если это Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

C:\Windows\System32>pip3 install pyqt5
Collecting pyqt5
Downloading PyQt5-5.9-5.9.1-cp35.cp36.cp37-none-win_amd64.whl (77.2MB)
100% |################################| 77.2MB 13kB/s
Collecting sip<4.20,>=4.19.3 (from pyqt5)
Downloading sip-4.19.3-cp35-none-win_amd64.whl (49kB)
100% |################################| 51kB 984kB/s
Installing collected packages: sip, pyqt5
Successfully installed pyqt5-5.9 sip-4.19.3

Если это Π½Π΅ сработало, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ эту ссылку ΠΈΠ· SourceForge.

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ‚ΠΎΡ€Ρ‹ PyQt5.exe для Windows

Как Π½Π°ΠΉΡ‚ΠΈ установщика, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌ?

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, какая Ρƒ вас вСрсия Python ΠΈ Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас 32-разрядный ΠΈΠ»ΠΈ 64-разрядный Python.
Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Π― Π½Π° Python 3.5 64-Π±ΠΈΡ‚, поэтому я ΠΈΡ‰Ρƒ .exe с этими спСцификациями. Когда Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² SourceForge, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ с Π’ΠžΠ›Π¬ΠšΠž .zip ΠΈΠ»ΠΈ .tar.gz. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ индикация Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ, указываСтся столбцом Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ/НСдСля».
Π’ ΠΌΠΎΠ΅ΠΌ случаС я ΠΎΡ‚ΠΊΡ€ΠΎΡŽ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ PyQt-5.6.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ .exe Ρ„Π°ΠΉΠ»Ρ‹:

PyQt-5.6
|_PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x32-2.exe
|_PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x64-2.exe
|_PyQt5_gpl-5.6.zip
|_PyQt5_gpl-5.6.tar.gz

Π― знаю, Ρ‡Ρ‚ΠΎ это Python 3.5 Π½Π° Py3.5 Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°. Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ‰Ρƒ 64-Π±ΠΈΡ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, поэтому я Π·Π°Π³Ρ€ΡƒΠΆΡƒ PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x64-2.exe. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚!

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ с вашСй систСмой, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ появится сразу послС запуска .exe. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ. Π― Π½Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ dbag… Π― Π΄Π΅Π»Π°Π» это нСсколько Ρ€Π°Π·!

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΡƒΡŽ установку, Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ Python ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

from PyQt5 import QtCore, QtGui, QtWidgets

ΠžΡ‚Π²Π΅Ρ‚ β„–3

Π― нашСл частичноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅β€¦

Π¨Π°Π³ΠΈ ΠΏΠΎ установкС pyQt5 (с VS 2012) Π² Windows:

1) УстановитС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Qt 5.0.2 for Windows 64-bit (VS 2012, 500 MB) ΠΈΠ· здСсь.

2) ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ sip-4.14.7 (ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ снимок Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) ΠΈΠ· здСсь.

3) Π˜Π·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Developer Command Prompt for VS2012.

4) Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (Π² ΠΏΠ°ΠΏΠΊΠ΅ sip):

python configure.py
nmake
nmake install

5) ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ pyQt5 ΠΈΠ· здСсь.

6) Π˜Π·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ VS2012 x64 Native Tools Command Prompt.

7) Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

python configure.py

UPDATE: ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этих ΠΊΠΎΠΌΠ°Π½Π΄ Π½ΠΈΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

nmake
nmake install

РСшСниС: я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pyQt4 с Qt5… ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ pyQt5 находится Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ/Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠžΡ‚Π²Π΅Ρ‚ β„–4

Один ΠΈΠ· самых (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самый) самый простой способ установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² сайта, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PyQt5, β€” это установка ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· вСрсий Anaconda. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ сайтов, установив ΠΈΡ…. Бписок доступных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² сайтов с вСрсиями Anaconda ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ здСсь.

  • Dowload Anaconda3 ΠΈΠ»ΠΈ Anaconda2
  • УстановитС Π΅Π³ΠΎ.
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ PyQt5 Π² установку Anaconda ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ System Environment.

НапримСр:

PATH: ....; C:\Anaconda3\Lib\site-packages\PyQt5; ...
  1. Он Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию.

ΠžΡ‚Π²Π΅Ρ‚ β„–5

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Python ΠΈ PyQt5. Π― пытался ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pip, Π½ΠΎ Ρƒ мСня Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π½ΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с Windows. Если Ρƒ вас вСрсия Python 3.4 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, pip установлСн ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

python -m pip install pyqt5

Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ Python находится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды PATH. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ Python (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, where python Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

C:\users\userName\AppData\Local\Programs\Python\Python34\python.exe -m pip install pyqt5

ΠžΡ‚Π²Π΅Ρ‚ β„–6

Другая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄ cmd:

easy_install pyqt5

ΠžΡ‚Π²Π΅Ρ‚ β„–7

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Windows 10, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅

    py -m pip install pyqt5

Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π’ зависимости ΠΎΡ‚ вСрсии Python ΠΈΠ»ΠΈ Windows, ΠΈΠ½ΠΎΠ³Π΄Π° python -m pip install pyqt5 Π½Π΅ принимаСтся, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто Π½Π΅Π³ΠΎ py. pip β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅Ρ‰Π΅ΠΉ, поэтому я Π±Ρ‹ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» это.

ΠžΡ‚Π²Π΅Ρ‚ β„–8

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΡƒΠΏΠΎΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ диспСтчСр ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для установки qt (ΠΈ ΠΈΠ»ΠΈ pyqt)

ΠžΡ‚Π²Π΅Ρ‚ β„–9

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Anaconda. Π‘Π½Π°Ρ‡Π°Π»Π° установитС Anaconda ΠΈΠ»ΠΈ Miniconda Π½Π° Π²Π°ΡˆΡƒ систСму (скачайтС с здСсь), Π° Π·Π°Ρ‚Π΅ΠΌ установитС pyqt ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

conda install pyqt

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΎΠ±Π΅ΠΈΡ… вСрсий python (2 ΠΈ 3).

ΠžΡ‚Π²Π΅Ρ‚ β„–10

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ PyQt5 ΠΏΠΎΠ΄ GPL, запуститС (см. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ PyQt5):

pip3 install pyqt5

Π­Ρ‚ΠΎ установит колСсо Python для вашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ вашСй вСрсии Python (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ).

(КолСсо Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΈΠ· индСкса ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python.)

КолСсо PyQt5 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ части вСрсии LGt Qt. НСт нСобходимости ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Qt ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

(НСобходимый sip ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ колСсо ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΈ установлСн автоматичСски.)


ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ сообщСниС ΠΎΠ± ошибкС, говорящСС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠ°ΠΊ

No downloads could be found that satisfy the requirement

Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹, вСроятно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Python.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5 | Interesting Life

Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠΎΠ»ΠΎΠ²Β ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5 Π½Π° свой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π½ΠΎ всС ΠΎΠ½ΠΈ ΠΈΠ· сСрии «Π»ΡƒΡ‡ΡˆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ, Ρ‡Π΅ΠΌ это».

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ вопросов, Π½Π°Ρ‡Π½Π΅ΠΌ установку PyQt5 с самого Π½Π°Ρ‡Π°Π»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с установки ΠΈ настройки самого ΠΏΠΈΡ‚ΠΎΠ½Π°, послС этого станСт понятно, ΠΊΠ°ΠΊ ΠΆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот графичСский Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΈ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ самого ΠΏΠΈΡ‚ΠΎΠ½Π° ΠΈ PyQt5 Π±Ρ‹Π»ΠΈ совмСстимы.

Если Π²Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡ‚ΠΎΠ½ Ρƒ вас ΡƒΠΆΠ΅ стоит. ПослС этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, какая вСрсия ΠΏΠΈΡ‚ΠΎΠ½Π° установлСна Π½Π° ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Для этого Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти python —version

Если ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ запрос Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ, Π½ΠΎ ΠΏΠΈΡ‚ΠΎΠ½ Π²Ρ‹ ΠΏΡ€ΠΈ этом устанавливали ΠΏΠΈΡ‚ΠΎΠ½, Ρ‚ΠΎ скорСС всСго Ρƒ вас Π½Π΅ установлСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды.

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ вас Ρ€Π°Π±ΠΎΡ‚Π°Π» PyQt, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ вас стоял ΠΏΠΈΡ‚ΠΎΠ½ вСрсии 3.6, Π½Π΅ Π²Ρ‹ΡˆΠ΅! ВСрсия 3.7 ΠΏΠΎΠΊΠ° Π½Π΅ поддСрТиваСтся!

ВСрсии Π½ΠΈΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½ΠΎΠ²ΠΈΠ½ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ нСдоступны, Python 3.6 ΠΏΠΎΡ‡Ρ‚ΠΈ СдинствСнная вСрсия, которая совмСщаСт Π² сСбС Π½ΠΎΠ²ΠΈΠ·Π½Ρƒ ΠΈ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ придСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π½Π° сайтС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ 3.6.Β 

Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС python.org/downloadsΒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Π’ΠΎ врСмя установки ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ„Π»Π°ΠΆΠΎΠΊ Π½Π° надписи ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Path.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды?

ΠΠ°ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° «ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€», Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ «ΡΠ²ΠΎΠΉΡΡ‚Π²Π°». ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ «Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ систСмы», Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды».

ПослС этого, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ установкС самого PyQt5.

Для этого снова придСтся Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ pip install pyqt5 pyqt5-tools

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ графичСским Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒΒ C:\Users\User\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\pyqt5_tools

Π’ Π½Π΅ΠΉ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Designer.exe, ΠΆΠΌΠ΅Ρ‚Π΅ Π½Π° Π½Π΅Ρ‘ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ создаСтС ярлык, Π΄Π°Π»Π΅Π΅ этот ярлык ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол, ΠΈ спокойно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.


Kotlin ΠΈΠ»ΠΈ Java Android

Ѐриланс для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов

Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ Π½Π° Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Β 

Руководство ΠΏΠΎ PyQt5

Π’ этом руководствС ΠΏΠΎ PyQt5 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python 3 ΠΈ Qt для создания графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Windows, Mac ΠΈΠ»ΠΈ Linux. ΠœΡ‹ Π΄Π°ΠΆΠ΅ расскаТСм, ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ установщик.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ PyQt5?

PyQt β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Qt GUI (GUI β€” это графичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) Π² Python.Β Π‘Π°ΠΌ Qt, ΠΊΠ°ΠΊ извСстно, написан Π½Π° C++. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ Π² Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Π½Π΅ ТСртвуя ΠΏΡ€ΠΈ этом Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ C++.

PyQt5 это самая послСдняя, пятая вСрсия Qt. Π•Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ случайноС ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ PyQt4, Π½ΠΎ эта вСрсия устарСла ΠΈ большС Π½Π΅ поддСрТиваСтся.

Новый интСрСсный ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ PyQt β€” это Qt for Python. Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ API, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ PyQt ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ LGPL ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ бСсплатно Π΄Π°ΠΆΠ΅ Π² коммСрчСских ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Она поддСрТиваСтся ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Qt, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, скорСС всСго, Π·Π° Π½Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PyQt, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΠΎΠ»Π΅Π΅ зрСлая. Но, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… интСрфСйсы ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Qt for Python ΠΏΠΎΠ·Π΄Π½Π΅Π΅.

Установка PyQt

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ зависимостями Π² Python β€” Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ срСда β€” это просто Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ общСсистСмной установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, это Π½Π΅ Π½Π΅ повлияСт Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ваши ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

Для создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСды Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

python3 -m venv venv

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ venv/. Π§Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду Π² Windows, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

call venv/scripts/activate.bat

А для Mac ΠΈ Linux Π²ΠΎΡ‚ эту:

source venv/bin/activate

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ срСда Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ прСфиксу (venv) Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install PyQt5==5.9.2

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Π΅Ρ€ΡΠΈΡŽ 5.9.2, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ всС вСрсии PyQt ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹. Данная вСрсия Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π˜Ρ‚Π°ΠΊ, поздравляСм! Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ установили PyQt5.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ GUI (графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ самоС врСмя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ графичСский интСрфСйс! Π’ нашСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС запустим Python ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PyQt ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import:

from PyQt5.QtWidgets import QApplication, QLabel

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм QApplication ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

app = QApplication([])

Π­Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt: ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр класса QApplication. Π”ΠΎ выполнСния Π΄Π°Π½Π½ΠΎΠΉ строки ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π² Qt просто Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ такая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ вашСм Qt ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π‘ΠΊΠΎΠ±ΠΊΠΈ [] Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΌΡ‹ оставляСм скобки пустыми.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΌΡ‹ создаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

label = QLabel('Hello World!')

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ вывСсти это Π½Π° экран:

label.show()

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ нСбольшоС окошко (Π΅Π³ΠΎ Π²ΠΈΠ΄ зависит ΠΎΡ‚ вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы):

ПослСдний шаг β€” ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Qt ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Β«Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ Π΅Π³ΠΎΒ». Π­Ρ‚ΠΎ дСлаСтся Ρ‚Π°ΠΊ:

app.exec_()

Если всС это сработало, ΠΊΠ°ΠΊ оТидалось, Ρ‚ΠΎΠ³Π΄Π° супСр! Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Python ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt своС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с графичСским интСрфСйсом.

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹

ВсС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² прилоТСниях PyQt, называСтся Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ. Кнопки, сообщСния, ΠΎΠΊΠ½Π°, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ выполнСния ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ β€” всС это Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. Подобно html элСмСнтам, Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π² Qt Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. НапримСр, ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π° ΠΊΠ½ΠΎΠΏΠΊΠ°, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, β€” сообщСниС.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Qt:

Они пСрСчислСны Π½ΠΈΠΆΠ΅ Π² порядкС свСрху Π²Π½ΠΈΠ· ΠΈ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ:

ΠžΡ‚ΡΡŽΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, ΠΊΠΎΠ΄ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСт Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

ΠœΠ°ΠΊΠ΅Ρ‚Ρ‹

Как ΠΈ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ваш графичСский интСрфСйс, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². Π’ этом случаС Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Qt, ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ QVBoxLayout для Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ располоТСния Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ²:

Π’ΠΎΡ‚ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ интСрфСйс, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
layout.addWidget(QPushButton('Top'))
layout.addWidget(QPushButton('Bottom'))
window.setLayout(layout)
window.show()
app.exec_() 

Как ΠΈ Ρ€Π°Π½Π΅Π΅, ΠΌΡ‹ создали экзСмляр класса QApplication. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм само ΠΎΠΊΠ½ΠΎ (window). ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для Π½Π΅Π³ΠΎ самый простой Ρ‚ΠΈΠΏ QWidget,Β Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ особого повСдСния Π½Π°ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΠΌΠ°ΠΊΠ΅Ρ‚ (layout) ΠΈ добавляСм ΠΊ Π½Π΅ΠΌΡƒ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ QPushButton. НаконСц, ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠΊΠ½Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ этот ΠΌΠ°ΠΊΠ΅Ρ‚ (ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅Π³ΠΎ содСрТимоС). Как ΠΈ Π² нашСм ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΌΡ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² .show () ΠΈ app.exec_ ().

БСзусловно, сущСствуСт большоС количСство Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ QHBoxLayout для размСщСния элСмСнтов Π² ряд. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Qt.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ стили

Одной ΠΈΠ· ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… сторон Qt являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… стилСй. БущСствуСт мноТСство ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ внСшний Π²ΠΈΠ΄ вашСго прилоТСния. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ описаны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ….

ВстроСнныС стили

Π‘Π°ΠΌΡ‹ΠΉ Π³Ρ€ΡƒΠ±Ρ‹ΠΉ способ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ внСшний Π²ΠΈΠ΄ вашСго прилоТСния β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ. ВспомнитС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅:

Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΡ‚ΠΈΠ»ΡŒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Fusion. Если вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ Windows, это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ app.setStyle (…):

from PyQt5.QtWidgets import *
app = QApplication([])
app.setStyle('Fusion')
...

ДоступныС стили зависят ΠΎΡ‚ вашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Β«FusionΒ», Β«WindowsΒ», Β«WindowsVistaΒ» (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Windows) ΠΈ Β«MacintoshΒ» (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Mac).

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°

Если Π²Π°ΠΌ нравится ΡΡ‚ΠΈΠ»ΡŒ, Π½ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Ρ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ QPalette ΠΈ app.setPalette (...). НапримСр:

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import QApplication, QPushButton

app = QApplication([])
app.setStyle('Fusion')
palette = QPalette()
palette.setColor(QPalette.ButtonText, Qt.red)
app.setPalette(palette)
button = QPushButton('Hello World')
button.show()
app.exec_() 

Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ†Π²Π΅Ρ‚ тСкста Π² ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… Π½Π° красный:

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ стиля Fusion, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ здСсь.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ стилСй

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ внСшний Π²ΠΈΠ΄ своСго прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°Π±Π»ΠΈΡ† стилСй. Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ CSS Π² Qt. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пространство:

from PyQt5.QtWidgets import QApplication, QPushButton

app = QApplication([])
app.setStyleSheet("QPushButton { margin: 10ex; }")
button = QPushButton('Hello World')
button.show()
app.exec_() 

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… стилСй смотритС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Qt.

Π‘ΠΈΠ³Π½Π°Π»Ρ‹ ΠΈ слоты

Qt ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ сигналами (signals), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ события, ΠΊΠ°ΠΊ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это. Код содСрТит ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ отобраТаСтся ΠΎΠΊΠ½ΠΎ сообщСния.

from PyQt5.QtWidgets import *

app = QApplication([])
button = QPushButton('Click')
def on_button_clicked():
    alert = QMessageBox()
    alert.setText('You clicked the button!')
    alert.exec_()

button.clicked.connect(on_button_clicked)
button.show()
app.exec_() 

Π‘Ρ‚Ρ€ΠΎΠΊΠ° button.clicked β€” это сигнал, ΠΌΠ΅Ρ‚ΠΎΠ΄ .connect (...) позволяСт Π½Π°ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΠΌ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ слот. Π­Ρ‚ΠΎ просто функция, которая вызываСтся ΠΏΡ€ΠΈ поступлСнии сигнала. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ наш слот ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ сообщСния.

Π’Π΅Ρ€ΠΌΠΈΠ½ «слот» Π²Π°ΠΆΠ΅Π½ ΠΏΡ€ΠΈ использовании Qt Π² C++, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² C++ слоты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Однако Π² Python любая функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слотом β€” ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ это Π²Ρ‹ΡˆΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ слотами ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ функциями Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ для нас большого значСния.

Π‘ΠΈΠ³Π½Π°Π»Ρ‹ Π² Qt ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ повсСмСстно. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои собствСнныС сигналы. Но это Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства.

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания для создания GUI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Допустим, Π²Ρ‹ написали ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Оно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ вашСго прилоТСния ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python ΠΈ PyQt, ΠΊΠ°ΠΊ ΠΌΡ‹ сдСлали Π²Ρ‹ΡˆΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ свой исходный ΠΊΠΎΠ΄. Но это ΠΎΡ‡Π΅Π½ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ). ВмСсто этого Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ вашСго прилоТСния. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² своих систСмах, Π½Π΅ устанавливая Π½ΠΈΡ‡Π΅Π³ΠΎ.

Π’ ΠΌΠΈΡ€Π΅ Python процСсс прСвращСния исходного ΠΊΠΎΠ΄Π° Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» называСтся Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ (freezing). НСсмотря Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ мноТСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ PyInstaller, py2exe, cx_Freeze, bbfreze, py2app ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ PyQt всСгда Π±Ρ‹Π»ΠΎ Π½Π° ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ нСпростой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ fbs, которая позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ PyQt. Для Π΅Π΅ установки Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install fbs

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

fbs startproject

Π’Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ввСсти нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Когда Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ run, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ пустоС ΠΎΠΊΠ½ΠΎ:

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ PyQt5, Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅. Π•Π³ΠΎ исходный ΠΊΠΎΠ΄ находится Π² src/main/python/main.py Π² вашСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Но Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ самоС интСрСсноС: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ fbs, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ»!

fbs freeze

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡƒ /MyApp/ вашСго Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ своим Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ (с Ρ‚ΠΎΠΉ ΠΆΠ΅ ОБ, Ρ‡Ρ‚ΠΎ ΠΈ ваша), ΠΈ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ смогут Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!

Бонус: создаСм установщик

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° fbs Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ установщик для вашСго прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fbs installer:

(Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Windows, Π²Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ NSIS ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ Π² свой PATH.)

Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ использованию Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ fbs ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΅Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π˜Ρ‚ΠΎΠ³ΠΈ

Если Π²Ρ‹ дошли Π΄ΠΎ этого мСста β€” ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ наши поздравлСния. НадССмся, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ для написания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PyQt (ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΅Π΅ части). ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ установщики ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ fbs.

PyQt5: ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ | Python 3 для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π― Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ сСрии ΡƒΡ€ΠΎΠΊΠΎΠ² PyQt5 ΠΎΡ‚ zetcode.

PyQt5 — это Π½Π°Π±ΠΎΡ€ Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для создания графичСского интСрфСйса Π½Π° Π±Π°Π·Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Qt5 ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Digia.

Он доступСн для Python 2.x ΠΈ 3.x. Π­Ρ‚ΠΎΡ‚ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Python 3.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Qt являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GUI (графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5 Π½Π° Windows ΠΌΠΎΠΆΠ½ΠΎ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt5 Π½Π° linux-систСмы ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

sudo apt-get install python3-pyqt5 pyqt5-dev-tools

PyQt5 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° python-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 620 классов ΠΈ 6000 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π­Ρ‚ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° всСх основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, Π² Ρ‚ΠΎΠΌ числС Unix, Windows ΠΈ Mac OS.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π­Ρ‚ΠΎ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ нСбольшоС ΠΎΠΊΠ½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с этим ΠΎΠΊΠ½ΠΎΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ написания Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΊΠΎΠ΄Π°. Однако ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΆΠ΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎ нас. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ повторяСтся Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅Ρ‚ нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ снова.

PyQt5 являСтся инструмСнтом высокого уровня. Если Π±Ρ‹ ΠΌΡ‹ писали это Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ Π±Ρ‹ Ρ€Π°ΡΡ‚ΡΠ½ΡƒΡ‚ΡŒΡΡ Π½Π° сотни строк:

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget


if __name__ == '__main__':

    app = QApplication(sys.argv)

    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    sys.exit(app.exec_())

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ нСбольшоС ΠΎΠΊΠ½ΠΎ Π½Π° экранС.

import sys
from PyQt5.QtWidgets import QApplication, QWidget

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ располоТСны Π² PyQt5.QtWidgets.

app = QApplication(sys.argv)

КаТдоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ PyQt5 Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прилоТСния (экзСмпляр QApplication). ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ sys.argv это список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Python ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π­Ρ‚ΠΎ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск Π½Π°ΡˆΠΈΡ… сцСнариСв.

w = QWidget()

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ QWidget это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² PyQt5. ΠœΡ‹ прСдоставляСм конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для QWidget. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ родитСля. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ Π±Π΅Π· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ называСтся ΠΎΠΊΠ½ΠΎ.

w.resize(250, 150)

ΠœΠ΅Ρ‚ΠΎΠ΄ resize() измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°. Он стал 250 пиксСлСй Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ 150 Π² высоту.

w.move(300, 300)

ΠœΠ΅Ρ‚ΠΎΠ΄ move() Π΄Π²ΠΈΠ³Π°Π΅Ρ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π½Π° экранС Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ x=300, y=300.

w.setWindowTitle('Simple')

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π·Π°Π΄Π°Ρ‘ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ нашСго ΠΎΠΊΠ½Π°.

w.show()

ΠœΠ΅Ρ‚ΠΎΠ΄ show() ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π½Π° экранС. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ сначала создаётся Π² памяти, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° show) показываСтся Π½Π° экранС.

sys.exit(app.exec_())

НаконСц, ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² основной Ρ†ΠΈΠΊΠ» прилоТСния. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий начинаСтся с этой Ρ‚ΠΎΡ‡ΠΊΠΈ. Основной Ρ†ΠΈΠΊΠ» ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ события ΠΎΡ‚ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ распрСдСляСт ΠΈΡ… ΠΏΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌ прилоТСния. Основной Ρ†ΠΈΠΊΠ» заканчиваСтся, Ссли ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ exit() ΠΈΠ»ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½. ΠœΠ΅Ρ‚ΠΎΠ΄ sys.exit() Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ чистый Π²Ρ‹Ρ…ΠΎΠ΄. Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ exec_ () ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ exec являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Π² python 2.

Π—Π½Π°Ρ‡ΠΎΠΊ прилоТСния

Π—Π½Π°Ρ‡ΠΎΠΊ прилоТСния — нСбольшоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ отобраТаСтся Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² PyQt5. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ прСдставим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠΊΠΎΠ½ΠΊΡƒ πŸ™‚

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon


class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Icon')
        self.setWindowIcon(QIcon('web.png'))

        self.show()


if __name__ == '__main__':

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

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Ρ‹Π» написан Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ стилС. Π―Π·Ρ‹ΠΊ программирования Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ стили программирования. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² PyQt5 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ООП.

class Example(QWidget):

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

Π’Ρ€ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это классы, Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ класс Example. Класс Example наслСдуСтся ΠΎΡ‚ класса QWidget. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΄Π²Π° конструктора: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ для класса Example ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Ѐункция super() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Example с классом, ΠΈ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ конструктор.

self.initUI()

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ GUI дСлСгируСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ initUI().

self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))

ВсС Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Ρ‹Π»ΠΈ унаслСдованы ΠΎΡ‚ класса QWidget.

ΠœΠ΅Ρ‚ΠΎΠ΄ setGeometry() Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ: ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ Π½Π° экранС ΠΈ устанавливаСт Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ… ΠΈ Ρƒ — это позиция ΠΎΠΊΠ½Π°. Π’Ρ€Π΅Ρ‚ΠΈΠΉ — ΡˆΠΈΡ€ΠΈΠ½Π°, ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ — высота ΠΎΠΊΠ½Π°. На самом Π΄Π΅Π»Π΅, ΠΎΠ½ сочСтаСт Π² сСбС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ resize() ΠΈ move() Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅.

ПослСдний ΠΌΠ΅Ρ‚ΠΎΠ΄ устанавливаСт ΠΈΠΊΠΎΠ½ΠΊΡƒ прилоТСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΌΡ‹ создали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ QIcon. QIcon ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ нашСй ΠΈΠΊΠΎΠ½ΠΊΠ΅ для отобраТСния.

if __name__ == '__main__':

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

Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ application ΠΈ Example. ЗапускаСтся основной Ρ†ΠΈΠΊΠ».

Подсказки

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку для любого ΠΈΠ· Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ².

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

import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
    QPushButton, QApplication)
from PyQt5.QtGui import QFont


class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        QToolTip.setFont(QFont('SansSerif', 10))

        self.setToolTip('This is a <b>QWidget</b> widget')

        btn = QPushButton('Button', self)
        btn.setToolTip('This is a <b>QPushButton</b> widget')
        btn.resize(btn.sizeHint())
        btn.move(50, 50)

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


if __name__ == '__main__':

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

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ подсказку для Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² PyQt5.

QToolTip.setFont(QFont('SansSerif', 10))

Π­Ρ‚ΠΎΡ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ устанавливаСт ΡˆΡ€ΠΈΡ„Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для отобраТСния подсказки. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ 10px SansSerif.

self.setToolTip('This is a <b>QWidget</b> widget')

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ setToolTip(). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста.

btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')

ΠœΡ‹ создаСм Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ устанавливаСм подсказку для Π½Π΅Π³ΠΎ.

btn.resize(btn.sizeHint())
btn.move(50, 50)

МСняСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΊΠ½Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ sizeHint() Π΄Π°Π΅Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ для ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π°

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, это Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° крСстик. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ нашС ΠΎΠΊΠ½ΠΎ. ΠœΡ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим сигналы ΠΈ слоты.

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

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        qbtn = QPushButton('Quit', self)
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)

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


if __name__ == '__main__':

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

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ создаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π°. ПослС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

qbtn = QPushButton('Quit', self)

ΠœΡ‹ создаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ. Кнопка являСтся экзСмпляром класса QPushButton. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ конструктора — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ являСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ являСтся Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ Example, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСтся ΠΎΡ‚ QWidget.

qbtn.clicked.connect(QCoreApplication.instance().quit)

БистСма ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий Π² PyQt5 построСна Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ сигналов ΠΈ слотов. Если ΠΌΡ‹ Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, вызовСтся сигнал «Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅». Π‘Π»ΠΎΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слот Qt ΠΈΠ»ΠΈ любая Python функция.

QCoreApplication содСрТит Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ; ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ диспСтчСризируСт всС события. ΠœΠ΅Ρ‚ΠΎΠ΄ instance() Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ QCoreApplication создаСтся с QApplication. Π‘ΠΈΠ³Π½Π°Π» «Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ quit(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ осущСствляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ: отправитСля ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прилоТСния.

Message Box

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли ΠΌΡ‹ Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° крСстик, QWidget закрываСтся. Иногда ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ сдСлали Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния. ΠœΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ с сообщСниСм для подтвСрТдСния дСйствия.

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

import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication


class Example(QWidget):

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

        self.initUI()


    def initUI(self):

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


    def closeEvent(self, event):

        reply = QMessageBox.question(self, 'Message',
            "Are you sure to quit?", QMessageBox.Yes |
            QMessageBox.No, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':

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

Если ΠΌΡ‹ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ QWidget, гСнСрируСтся QCloseEvent. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события closeEvent().

reply = QMessageBox.question(self, 'Message',
    "Are you sure to quit?", QMessageBox.Yes |
    QMessageBox.No, QMessageBox.No)

ΠœΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ с сообщСниСм ΠΈ с двумя ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ: Yes ΠΈ No. ΠŸΠ΅Ρ€Π²Π°Ρ строка отобраТаСтся Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΎΠΊΠ½Π°. Вторая строка являСтся тСкстовым сообщСниСм ΠΈ отобраТаСтся Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅. Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ опрСдСляСт ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π΅. ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ установлСн фокус ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ reply.

if reply == QtGui.QMessageBox.Yes:
    event.accept()
else:
    event.ignore()

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ провСряСм Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если ΠΌΡ‹ Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Yes, ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΈ прилоТСния. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ событиС закрытия.

Π¦Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π½Π° экранС

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС.

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

import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication


class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        self.resize(250, 150)
        self.center()

        self.setWindowTitle('Center')
        self.show()


    def center(self):

        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())


if __name__ == '__main__':

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

Класс QtWidgets.QDesktopWidget прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² Ρ‚ΠΎΠΌ числС ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… экрана.

self.center()

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, находится Π² Π½Π°ΠΌΠΈ созданном ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ center().

qr = self.frameGeometry()

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π»ΡŽΠ±Ρ‹Π΅ Ρ€Π°ΠΌΠΊΠΈ ΠΎΠΊΠ½Π°.

cp = QDesktopWidget().availableGeometry().center()

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана нашСго ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°. И с этим Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.

qr.moveCenter(cp)

Наш ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ установили Ρ†Π΅Π½Ρ‚Ρ€ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана. Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π΅ измСняСтся.

self.move(qr.topLeft())

ΠœΡ‹ Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» ΠΎΠΊΠ½Π° прилоТСния Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° qr, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, цСнтрируя ΠΎΠΊΠ½ΠΎ Π½Π° нашСм экранС.

Π’ этой части ΡƒΡ€ΠΎΠΊΠ° PyQt5 ΠΌΡ‹ рассмотрСли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основы.

python 3.x — Установка PyQt5 Designer Π½Π° windows

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

  1. Около
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

  3. Для ΠΊΠΎΠΌΠ°Π½Π΄
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
    Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

  3. Вакансии
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

  4. Π’Π°Π»Π°Π½Ρ‚
    НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

  5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

.

python — ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt4 Π² Windows?

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

  1. Около
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

  3. Для ΠΊΠΎΠΌΠ°Π½Π΄
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
    Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

  3. Вакансии
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

  4. Π’Π°Π»Π°Π½Ρ‚
    НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

  5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

  6. О компании

Загрузка…

.

python — установка PyQt5 Π² Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

  1. Около
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

  3. Для ΠΊΠΎΠΌΠ°Π½Π΄
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
    Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

  3. Вакансии
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

  4. Π’Π°Π»Π°Π½Ρ‚
    НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

  5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

  6. О компании

.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt 4.3 ΠΈ Python 2.5 Π² Windows

ОбновлСниС 1/10/2008: PyQt Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростил процСсс установки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ объСдинил всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ установщикС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π΅Ρ€ΡΠΈΡŽ QT 4.3 с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ PyQt. Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ шаги. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ старыС инструкции.

ОбновлСниС 01.07.2008: обновлСно для PyQt 4.4.2

ΠΠžΠ’Π«Π• ИНБВРУКЦИИ

Π’ΠΎΡ‚ шаги ΠΏΠΎ установкС ΠΈ созданию простого прилоТСния с графичСским интСрфСйсом Β«Hello WorldΒ» с использованиСм PyQt 4.4 ΠΈ Python 2.5 Π² Windows.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python 2.5

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° http://www.python.org/download/ ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Β«Python 2.5.x Windows installerΒ»
  2. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ запуститС установщик Windows
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ дСйствия ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

УстановитС ΠΏΠ°ΠΊΠ΅Ρ‚ PyQt 4.4 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ QT 4.4)

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° http://www.riverbankcomputing.co.uk/software/pyqt/download ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«PyQt-Py2.5-gpl-4.4.2. -1.exe «ΡΡΡ‹Π»ΠΊΠ°.
  2. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ запуститС Ρ„Π°ΠΉΠ».
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ шаги ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Hello WorldΒ»

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Β«ΠŸΡƒΡΠΊΒ» -> «ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹Β» -> Β«Python 2.5Β» -> Β«IDLE (Python GUI)Β»
  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ (Β«Π€Π°ΠΉΠ»Β» — > «НовоС ΠΎΠΊΠ½ΠΎΒ»)
  3. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ сохранитС:
     import sys
    ΠΈΠ· ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° PyQt4.QtGui *
    app = QApplication (sys.argv)
    button = QPushButton ("Hello World", НСт)
    button.show ()
    app.exec_ () 
  4. НаТмитС Β«F5Β» для запуска.Π”ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΎΠΊΠ½ΠΎ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ.

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Β«ΠŸΡƒΡΠΊΒ» -> «ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹Β» -> Β«PyQt GPL v4.4.2 для Python v2.5Β»> Β«ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹Β»> Β«Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² PyQtΒ» (для установки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это Ρ‚Π°ΠΊΠΆΠ΅ находится ΠΏΠΎ адрСсу C: \ Python25 \ PyQt4 \ examples .) Для Π½Π°Ρ‡Π°Π»Π° заглянитС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ «tutorial».

БВАРЫЕ ИНБВРУКЦИИ

Π’ΠΎΡ‚ шаги ΠΏΠΎ установкС ΠΈ созданию простого прилоТСния с графичСским ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом Β«Hello WorldΒ» с использованиСм PyQt 4.1.1, Python 2.5 ΠΈ QT 4.2.2 Выпуск с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ (GPL) Π² Windows XP с компилятором MinGW.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python 2.5

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу http://www.python.org/download/ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Python 2.5 Windows installerΒ»
  2. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ запуститС установщик Windows
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ дСйствия ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

УстановитС MinGW

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° http://www.mingw.org/download.shtml
  2. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ bin ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Β«Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΒ»:
    • gcc-core-3.4.2-20040916-1.tar.gz
    • gcc-g ++ — 3.4.2-20040916-1.tar.gz
    • mingw-runtime-3.9.tar.gz
    • w32api-3.6.tar.gz
  3. РаспакуйтС всС Ρ„Π°ΠΉΠ»Ρ‹ Π² Β«c: \ mingwΒ»

УстановитС QT 4.2.2 Open Source edition

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° страницу Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎ адрСсу http://www.trolltech.com/developer/downloads/qt/windows . ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ сущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия. Π­Ρ‚ΠΎ * Π½Π΅ * Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½.
  2. Под Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΒ» Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«http: // ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-4.2.2-mingw.exe «.
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ дСйствия ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
  4. Когда Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π° страницу MinGW, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ»Π΅ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ установку MinGWΒ» снятым ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ для мСста установки MinGW Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«c: \ mingwΒ». НаТмитС Β«Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΒ».
  5. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» «w32api.h». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 3.2 с сайта mingw, Π½ΠΎ вСрсия 3.6 вСрсия Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. НаТмитС Β«Π”Π°Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ. НаТмитС Β«Π“ΠΎΡ‚ΠΎΠ²ΠΎΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ установку.

УстановитС PyQt 4.1.1

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° http://www.riverbankcomputing.co.uk/pyqt/download.php ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«PyQt-gpl-4.1.1-Py2.5-Qt4.2.2. exe «ΡΡΡ‹Π»ΠΊΠ°.
  2. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ запуститС Ρ„Π°ΠΉΠ».
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ шаги ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды

  1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ «Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Β» ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ «Бвойства»
  2. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΒ»
  3. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Β«ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды»
  4. НСобходимо ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:
    • ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пСрСмСнная QTDIR — «c: \ qt \ 4.2.2 «
    • ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ пСрСмСнная QMAKESPEC -» win32-g ++ «
    • систСмная пСрСмСнная PATH — include» C: \ Qt \ 4.2.2 \ bin; C: \ Python25 \ Scripts; C: \ Python25; C: \ Python25 \ DLLs ; «

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β« Hello World Β»

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π²Β« ΠŸΡƒΡΠΊ Β»->Β« ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β»->Β« Python 2.5 Β»->Β« IDLE (Python GUI) Β»
  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ( Β«Π€Π°ΠΉΠ»Β» -> «НовоС ΠΎΠΊΠ½ΠΎΒ»)
  3. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ сохранитС:
     import sys 
    from PyQt4.QtGui import *
    app = QApplication (sys.argv)
    button = QPushButton ("Hello World", НСт)
    button.show ()
    app.exec_ ()
  4. НаТмитС Β«F5Β» для запуска.

Π’Π΅Π³ΠΈ Technorati: python, pyqt.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *