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 client使用http post 到server端的代码
Feb 10 Python
Python中运行并行任务技巧
Feb 26 Python
python基于phantomjs实现导入图片
May 13 Python
python中logging库的使用总结
Oct 18 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
跟我学Laravel之安装Laravel
2014/10/15 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
Safari5中alert的无限循环BUG
2011/04/07 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python 进程的几种创建方式详解
2019/08/29 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
django在开发中取消外键约束的实现
2020/05/20 Python
浅谈Python 参数与变量
2020/06/20 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
花卉与景观设计系大学生求职信
2013/10/01 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
经典婚礼主持词
2014/03/13 职场文书
企业授权委托书范本
2014/04/02 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书