Python-PyQt5: 高级工具套件的快速入门

一、PyQt5简介

  1.概述QT、GUI、PyQt5

   这是一个显示窗口的高级工具套件,为我们封装了很多复杂功能的实现代码,详细的说,就是封装了CSS的样式,JS的按钮等组件,我们可以更加简单的通过函数去实现这些功能。比如:我们可以通过它调整窗口尺寸,最大化或最小化这个窗口;也可以通过添加按钮,来执行你想执行的操作。PyQt是QT框架的Python语言实现,存在有PyQt3,PyQt4,PyQt5三个版本, 建议直接学习PyQt5就可以了。Qt库是世界上最强大的GUI库之一,跨平台,开发语言为C++。GUI就是图像用户界面。Python的GUI库很多,除了PyQt,还有Tkinter,wxPython,PyGTK等等。不过,其中PyQt是最好用,最专业的。所以一句话,学Python的GUI,用PyQt5就对了。

  2.安装

    方法一,进入pharm的虚拟环境venv中,在网络畅通的情况下,执行pip installPyQt5==5.11.3

    方法二,将pip installPyQt5==5.11.3写入到requirement依赖文件中,执行批处理

                 (.venv\Scripts\pip install -r requirements.txt)即可!

脚本如下:

del /S /F /Q venv
rd /S /Q venv
%PYTHON36%\python.exe -m venv venv

.\venv\Scripts\pip install -r requirements.txt

  3.初始化

import sys
from PyQt5.QtWidgets import QApplication, QWidget
# 这里我们进行了一些必要模块的导入。最基础的widget组件位于PyQt5.QtWidget模块中
app = QApplication(sys.argv)
# 所有的PyQt5应用必须创建一个应用(Application)对象。
# sys.argv参数是一个来自命令行的参数列Python脚本可以在shell中运行。
# 这是我们用来控制我们应用启动的一种方法。
w = QWidget()
# Qwidget组件是PyQt5中所有用户界面类的基础类。我们给QWidget提供了默认的构造方法。
# 默认构造方法没有父类。没有父类的widget组件将被作为窗口使用。
w.resize(250, 150)
# resize()方法调整了widget组件的大小。它现在是250px宽,150px高。
w.move(300, 300)
# move()方法移动widget组件到一个位置,这个位置是屏幕上x=300,y=300的坐标。
w.setWindowTitle('Simple')
# 这里我们设置了我们窗口的标题。这个标题显示在标题栏中。
w.show()
# show()方法在屏幕上显示出widget。一个widget对象在这里第一次被在内存中创建,之后在屏幕上显示。
sys.exit(app.exec_())
# 应用进入主循环。在这个地方,事件处理开始执行。主循环用于接收来自窗口触发的事件,
# 并且转发他们到widget应用上处理。如果我们调用exit()方法或主widget组件被销毁,
# 主循环将退出。sys.exit()方法确保一个不留垃圾的退出。
# 系统环境将会被通知应用是怎样被结束的。
# exec_()方法有一个下划线。因为# exec是Python保留关键字。因此,用exec_()来代替。

二、PyQt5常用部件的使用

从上到下,从左到右,它们是:

QLabel   QComboBox   QCheckBox   QRadioButton  QPushButton  QTableWidget  QLineEdit  QSlider   QProgressBar

 1.布局

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_()

像之前一样,我们先实例化了一个。然后,我们创建了一个窗口window。
我们使用了最基本的因为它仅仅是作为一个容器container,
而且我们也不想让它包含任何特殊的行为。接下来,我们创建一个布局layout并且给它添加两个。
最后,我们告诉窗口window去使用这个布局layout(因此也包括它的内容)。
像我们的第一个应用一样,我们需要在结尾调用和方法。
当然了,Qt中还有很多其他的布局类型(例如使用QHBoxLayout将内容摆放在一行row中)。

 2.自定义样式

Qt支持自定义样式custom styles。
在Qt有很多种方法可以让你自定义应用的外观和感觉look and feel,
修改应用外观最简单粗暴的方法就是直接设置全局样式。
要应用一个样式,你需要使用:
from PyQt5.QtWidgets import *
app=QApplication([])
app.setStyle('Fusion')
有多少可用的样式,这取决以你的操作系统。不过一般Windows操作系统以及Mac操作系统才有。

 3.自定义颜色

如果你喜欢一个样式,但是想要修改它的颜色(例如修改成黑色主题),那么你可以使用QPalette和,例如:
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_()
它会将按钮中的文字颜色改成红色:
要修改成黑色的样式,代码如下:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QColor
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')
app.setStyle("Fusion")
dark_palette=QPalette()
dark_palette.setColor(QPalette.Window,QColor(53,53,53))
dark_palette.setColor(QPalette.WindowText,Qt.white)
dark_palette.setColor(QPalette.Base,QColor(25,25,25))
dark_palette.setColor(QPalette.alternateBase,QColor(53,53,53))
dark_palette.setColor(QPalette.ToolTipBase,Qt.white)
dark_palette.setColor(QPalette.ToolTipText,Qt.white)
dark_palette.setColor(QPalette.Text,Qt.white)
dark_palette.setColor(QPalette.Button,QColor(53,53,53))
dark_palette.setColor(QPalette.ButtonText,Qt.white)
dark_palette.setColor(QPalette.BrightText,Qt.red)
dark_palette.setColor(QPalette.Link,QColor(42,130,218))
dark_palette.setColor(QPalette.Highlight,QColor(42,130,218))
dark_palette.setColor(QPalette.HighlightedText,Qt.black)
app.setPalette(dark_palette)
app.setStyleSheet("QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }")
button.show()
app.exec_()

 4.样式表

除了以上那个方法,你还可以通过样式表style sheets来修改应用的外观。
这与CSS差不多。我们可以在以下例子中使用它来添加一些间距spacing。

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

猜你喜欢

转载自blog.csdn.net/Odyssues_lee/article/details/86062305
今日推荐