python图形开发GUI库pyqt5的基本使用方法详解


Posted in Python onFebruary 14, 2020

一:安装PyQt5

pip install pyqt5

如果你的系统没有安装pip请阅读我们的另一篇文章 windows下python安装pip方法详解

二:PyQt5简单使用

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
"""
Py40.com PyQt5 tutorial 
 
In this example, we create a simple
window in PyQt5.
 
author: Jan Bodnar
website: py40.com 
last edited: January 2015
"""
 
import sys
 
#这里我们提供必要的引用。基本控件位于pyqt5.qtwidgets模块中。
from PyQt5.QtWidgets import QApplication, QWidget
 
 
if __name__ == '__main__':
 #每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。
 app = QApplication(sys.argv)
 #QWidget部件是pyqt5所有用户界面对象的基类。他为QWidget提供默认构造函数。默认构造函数没有父类。
 w = QWidget()
 #resize()方法调整窗口的大小。这离是250px宽150px高
 w.resize(250, 150)
 #move()方法移动窗口在屏幕上的位置到x = 300,y = 300坐标。
 w.move(300, 300)
 #设置窗口的标题
 w.setWindowTitle('Simple')
 #显示在屏幕上
 w.show()
 
 #系统exit()方法确保应用程序干净的退出
 #的exec_()方法有下划线。因为执行是一个Python关键词。因此,exec_()代替
 sys.exit(app.exec_())

上面的示例代码在屏幕上显示一个小窗口。

python图形开发GUI库pyqt5的基本使用方法详解

应用程序的图标

应用程序图标是一个小的图像,通常在标题栏的左上角显示。在下面的例子中我们将介绍如何做pyqt5的图标。同时我们也将介绍一些新方法。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
"""
py40 PyQt5 tutorial 
 
This example shows an icon
in the titlebar of the window.
 
author: Jan Bodnar
website: py40.com 
last edited: January 2015
"""
 
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
 
 
class Example(QWidget):
 
 def __init__(self):
  super().__init__()
  
  self.initUI() #界面绘制交给InitUi方法
  
  
 def initUI(self):
  #设置窗口的位置和大小
  self.setGeometry(300, 300, 300, 220) 
  #设置窗口的标题
  self.setWindowTitle('Icon')
  #设置窗口的图标,引用当前目录下的web.png图片
  self.setWindowIcon(QIcon('web.png'))  
  
  #显示窗口
  self.show()
  
  
if __name__ == '__main__':
 #创建应用程序和对象
 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

前面的例子是在程序风格。Python编程语言支持程序和面向对象编程风格。Pyqt5使用OOP编程。

class Example(QWidget):
 
 def __init__(self):
  super().__init__()
  ...

面向对象编程有三个重要的方面:类、变量和方法。这里我们创建一个新的类为Examle。Example继承自QWidget类。

python图形开发GUI库pyqt5的基本使用方法详解

显示提示语

在下面的例子中我们显示一个提示语

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
"""
Py40 PyQt5 tutorial 
 
This example shows a tooltip on 
a window and a button.
 
author: Jan Bodnar
website: py40.com 
last edited: January 2015
"""
 
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):
  #这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
  QToolTip.setFont(QFont('SansSerif', 10))
  
  #创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
  self.setToolTip('This is a <b>QWidget</b> widget')
  
  #创建一个PushButton并为他设置一个tooltip
  btn = QPushButton('Button', self)
  btn.setToolTip('This is a <b>QPushButton</b> widget')
  
  #btn.sizeHint()显示默认尺寸
  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_())

运行程序,显示一个窗口

python图形开发GUI库pyqt5的基本使用方法详解

关闭窗口

关闭一个窗口可以点击标题栏上的X。在下面的例子中,我们将展示我们如何通过编程来关闭窗口。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
"""
Py40 PyQt5 tutorial 
 
This program creates a quit
button. When we press the button,
the application terminates. 
 
author: Jan Bodnar
website: py40.com 
last edited: January 2015
"""
 
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_())

python图形开发GUI库pyqt5的基本使用方法详解

消息框

默认情况下,如果我们单击x按钮窗口就关门了。有时我们想修改这个默认的行为。例如我们在编辑器中修改了一个文件,当关闭他的时候,我们显示一个消息框确认。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
"""
ZetCode PyQt5 tutorial 
 
This program shows a confirmation 
message box when we click on the close
button of the application window. 
 
author: Jan Bodnar
website: zetcode.com 
last edited: January 2015
"""
 
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_())

我们关闭窗口的时候,触发了QCloseEvent。我们需要重写closeEvent()事件处理程序。

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

我们显示一个消息框,两个按钮:“是”和“不是”。第一个字符串出现在titlebar。第二个字符串消息对话框中显示的文本。第三个参数指定按钮的组合出现在对话框中。最后一个参数是默认按钮,这个是默认的按钮焦点。

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

我们处理返回值,如果单击Yes按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。

python图形开发GUI库pyqt5的基本使用方法详解

窗口显示在屏幕的中间

下面的脚本显示了如何在屏幕中心显示窗口。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
"""
Py40 PyQt5 tutorial 
 
This program centers a window 
on the screen. 
 
author: Jan Bodnar
website: py40.com 
last edited: January 2015
"""
 
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_())

QtGui,QDesktopWidget类提供了用户的桌面信息,包括屏幕大小。

本篇文章只是简单示范pyqt5的基本使用方法更详细的使用方法请查看我们的另一篇文章 python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法

更多关于python图形开发GUI库pyqt5的基本使用方法请查看下面的相关链接

Python 相关文章推荐
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
Python3 max()函数基础用法
Feb 19 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
python使用requests.session模拟登录
Aug 09 Python
python爬虫增加访问量的方法
Aug 22 Python
python文件和文件夹复制函数
Feb 07 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 #Python
在pycharm中实现删除bookmark
Feb 14 #Python
python图形开发GUI库wxpython使用方法详解
Feb 14 #Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 #Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 #Python
Python实现名片管理系统
Feb 14 #Python
pycharm设置当前工作目录的操作(working directory)
Feb 14 #Python
You might like
PHP聊天室技术
2006/10/09 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
python中使用序列的方法
2015/08/03 Python
利用python实现数据分析
2017/01/11 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Python实现简单http服务器
2018/04/12 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python实现的简单计算器功能详解
2018/08/25 Python
Python补齐字符串长度的实例
2018/11/15 Python
django中forms组件的使用与注意
2019/07/08 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
JPA的特点
2014/10/25 面试题
执行力心得体会
2013/12/31 职场文书
安全生产责任书范本
2014/04/15 职场文书
装修协议书范本
2014/04/21 职场文书
社区党建工作方案
2014/06/10 职场文书
简易离婚协议书范本
2014/10/24 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
使用Python开发冰球小游戏
2022/04/30 Python