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

一:安装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_())

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

应用程序的图标

应用程序图标是一个小的图像,通常在标题栏的左上角显示。在下面的例子中我们将介绍如何做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类。

显示提示语

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

#!/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_())

运行程序,显示一个窗口

关闭窗口

关闭一个窗口可以点击标题栏上的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_())

消息框

默认情况下,如果我们单击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按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。

窗口显示在屏幕的中间

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

#!/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的基本使用方法请查看下面的相关链接

(0)

相关推荐

  • Python3+Pycharm+PyQt5环境搭建步骤图文详解

    搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一.Python3.7安装 下载链接:官网https://www.python.org/downloads/windows/或腾讯软件中心下载https://pc.qq.com/detail/5/detail_24685.html或其他站点下载.我下载的是python-3.7.0-amd64. 下载到安装包后打开,如果想安装到默认路径(C盘)的话一直点下一步就可以了,或者自定义安装到其他分区,我的

  • Python PyQt5标准对话框用法示例

    本文实例讲述了Python PyQt5标准对话框用法.分享给大家供大家参考,具体如下: 很全的Qt的标准对话框,包含QInputDialog.QColorDialog.QFontDialog.QMessageBox.QOpenFileDialog... 全部是由官网的C++版本,转换成PyQt5版本. 有些细节忽略了,因为实在不知怎么转换过来.捣鼓了一晚上,总算完成了,好累啊,不过很开心! 效果图: 完整代码: # -*- coding: utf-8 -*- from PyQt5.QtGui i

  • Python PyQt5实现的简易计算器功能示例

    本文实例讲述了Python PyQt5实现的简易计算器功能.分享给大家供大家参考,具体如下: 这里剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它 [知识点] 1.利用循环添加按钮部件,及给每个按钮设置信号/槽 2.给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30)) 3.取事件的的发送者(此例为各个按钮)的文本: self.sender().text() [效果图] [源代码] import sys from PyQt

  • Python3 安装PyQt5及exe打包图文教程

    环境: Python 3.6.4 + Pycharm Professional 2017.3.3 + PyQt5 + PyQt5-tools ① Python 3 安装 Python 3.x 安装时,默认勾选ADD Python 3.6 to PATH和ADD Python to environment variables的情况下,系统会向path中增加以下两个环境变量. D:\Program Files\Python36\Scripts\; D:\Program Files\Python36\

  • python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法

    本文主要列出来python图形开发GUI库pyqt5的窗体,控件属性与方法如果你想看看python图形开发GUI库pyqt5的基础使用方法可以查看我们的另一篇文章 python图形开发GUI库pyqt5的基本使用方法详解 基本框架 import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * class Demo(QWidget): def __init__(self):

  • python3+PyQt5+Qt Designer实现堆叠窗口部件

    本文是对<Python Qt GUI快速编程>的第9章的堆叠窗口例子Vehicle Rental用Python3+PyQt5+Qt Designer进行改写. 第一部分无借用Qt Designer,完全用代码实现. 第二部分则借用Qt Designer,快速实现. 第一部分: import sys from PyQt5.QtCore import (Qt) from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QDialo

  • Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法

    1.先使用Qt designer设计两个窗口,一个是主窗口,一个是子窗口   其中主窗口是新建-Main Window,子窗口是Dialog窗体. 两个窗口不能是同一类型,否则会崩溃. 并保存为EyeTracking_main.ui和EyeTracking_process.ui(因为我在做眼动追踪,因此窗体命名与此相关,后同),使用UIC工具转成.py文件. 2.写一个驱动函数调用两个窗体 主窗体Eyetracking_main.py from PyQt5 import QtCore, QtGu

  • Python3使用PyQt5制作简单的画板/手写板实例

    1.前言 版本:Python3.6.1 + PyQt5 写一个程序的时候需要用到画板/手写板,只需要最简单的那种.原以为网上到处都是,结果找了好几天,都没有找到想要的结果. 网上的要么是非python版的qt程序(要知道qt版本之间差异巨大,还是非同一语言的),改写难度太大.要么是PyQt4的老程序,很多都已经不能在PyQt5上运行了.要么是大神写的特别复杂的程序,简直是直接做出了一个Windows自带的画图版,只能膜拜~ 于是我只能在众多代码中慢慢寻找自己需要的那一小部分,然后不断地拼凑,不断

  • python3使用pyqt5制作一个超简单浏览器的实例

    我们使用的是QWebview模块,这里也主要是展示下QWebview的用法. 之前在网上找了半天的解析网页的内容,都不是很清楚. 这是核心代码: webview = Qwebview() webview.load(Qurl('http://www.cnblogs.com/Blaxon/')) webview.show() 完整代码(代码是拿的别的代码改得): from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.Q

  • 关于python pyqt5安装失败问题的解决方法

    前言 最近在工作中遇到一个问题,python pyqt5在安装的时候居然提示失败了,无奈只能找解决的办法,发现网上有同样遇到这个问题的同学,所以就总结了解决的方法分享出来,下面话不多说了,来一起看看详细的介绍: 发现问题 以前装命令都是pip一条命令搞定,会自动安装依赖的库,但在安装pyqt5时却遇到了问题 在下载完pyqt5时,会提示找不到合适的SIP版本 Could not find a version that satisfies the requirement sip>=4.19 (fr

随机推荐