引用文章:http://code.py40.com/pyqt5/

文章目录

  • 简单的例子:创建一个小窗口
  • 应用程序的图标
  • 显示提示语
  • 通过按钮关闭窗口
  • 消息框(关闭窗口确认框)
  • 窗口显示在屏幕的中间【居中显示】

简单的例子:创建一个小窗口

PyQt5是一种高级的语言,下面只有几行代码就能显示一个小窗口。底层已经实现了窗口的基本功能。

# -*- coding: utf-8 -*-
"""
@File    : test4.py
@Time    : 2020/4/13 16:57
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
# !/usr/bin/python3
# -*- coding: utf-8 -*-import sys# 这里我们提供必要的引用。基本控件位于pyqt5.qtwidgets模块中。
from PyQt5.QtWidgets import QApplication, QWidgetif __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()方法确保应用程序干净的退出# app的exec_()方法有下划线。因为exec()执行是一个Python关键词,所以用exec_()代替sys.exit(app.exec_())

结果:

应用程序的图标

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
py40 PyQt5 tutorialThis 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 QIconclass 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('timg.jpg'))# 显示窗口self.show()if __name__ == '__main__':# 创建应用程序和对象app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

软件图标的ICON还是用带透明通道的png图为好

结果:

Python编程语言支持程序和面向对象编程风格。Pyqt5使用OOP编程。

面向对象编程有三个重要的方面:类、变量和方法。这里我们创建一个新的类为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并为他设置一个tooltipbtn = 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 tutorialThis 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 QCoreApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 250, 150)self.setWindowTitle('Quit button')qbtn = QPushButton('Quit、Quit、Quit\n退出、退出、退出', self)# Dontla 20200414 将按钮绑定退出?qbtn.clicked.connect(QCoreApplication.instance().quit)qbtn.resize(qbtn.sizeHint())qbtn.move(50, 50)self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

结果:

消息框(关闭窗口确认框)

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
ZetCode PyQt5 tutorialThis 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, QApplicationclass 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):# Dontla 20200414 最后一个参数是默认高亮的选择项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()事件处理程序。

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

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

窗口显示在屏幕的中间【居中显示】

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

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
Py40 PyQt5 tutorialThis 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, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# Dontla 20200414 不像setGeometry()函数那样指定位置和长宽,这个只指定长宽self.resize(250, 150)self.center()self.setWindowTitle('Center')self.show()# 控制窗口显示在屏幕中心的方法def center(self):# 获得窗口qr = self.frameGeometry()# print(qr)   # PyQt5.QtCore.QRect(0, 0, 249, 149)# 获得屏幕中心点cp = QDesktopWidget().availableGeometry().center()# print(cp)   # PyQt5.QtCore.QPoint(682, 363)# 显示到屏幕中心qr.moveCenter(cp)# Dontla 20200414 不懂这句跟上面那句啥区别?意思?# self.move(qr.topLeft())   # origin# print(qr.topLeft()) # PyQt5.QtCore.QPoint(558, 289)if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

结果:

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

python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)相关推荐

  1. visual basic VB.NET实例系列教程第二节(好玩又有趣的龟兔赛跑程序)

    没有什么比时间更具有说服力了,因为时间无须通知我们就能改变一切.<活着>----余华 时间过得真快呀,马上又到一天的下午三点了,今天我们继续教程,今天我们学点简单又有趣的东西. 龟兔赛跑是 ...

  2. Webview--如何让加载进来的页面自适应手机屏幕分辨率居中显示

    让Webview加载的页面居中显示有我知道的俩种方法 第一种: [java]  WebSettings settings = webView.getSettings();  settings.setL ...

  3. java如何设置文本框提示_[Java教程]一个友好的文本框内显示提示语 jquery 插件

    [Java教程]一个友好的文本框内显示提示语 jquery 插件 0 2014-08-08 18:01:25 插件实现文本框内默认显示提示语,当文本框获得焦点时提示语消失. 如果没有输入或输入为空则失 ...

  4. python PyQt5中文教程☞【第五节】PyQt5事件(Event)和信号(信号槽 Signals slots)

    引用文章:http://code.py40.com/pyqt5/22.html 在这一部分的pyqt5教程中,我们将探讨PyQt5中的事件Event 文章目录 事件 Event 信号槽 Signals ...

  5. python PyQt5中文教程☞【第十节】PyQt5绘图(绘制文本drawText()、画点drawPoints()、设置颜色、QPen(画笔)绘制线条、QBrush(笔刷)绘制纹理

    引用文章:http://code.py40.com/pyqt5/32.html 文章目录 绘制文本 画点 PyQt5颜色 QPen(画笔) QBrush(笔刷) 总结:一发现有事件触发就会更新QWid ...

  6. Python基础学习(第二节 下)

    这里写目录标题 1.布尔值的相关运算符 (1)布尔值 (2)比较运算符 (3)逻辑运算符 (4)同一运算符 2.字符串 (1)字符串的基本特点 (2)字符串的创建和len( )函数 (3)转义字符 ( ...

  7. Python Scrapy中文教程,Scrapy框架快速入门!

    谈起爬虫必然要提起 Scrapy 框架,因为它能够帮助提升爬虫的效率,从而更好地实现爬虫. Scrapy 是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含 request ...

  8. Python MoviePy中文教程导览及可执行音视频剪辑工具下载

    ☞ ░ 前往老猿Python博文目录 ░ <Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载>是老猿两个关于moviepy的专栏<PyQt+moviepy ...

  9. Python编程基础:第二节 多重赋值Multiple Assignment

    第二节 多重赋值Multiple Assignment 前言 取不同值的变量 取相同值的变量 前言 上一节中我们介绍了变量,通常情况下需要为每一个变量赋予相应的值,但是我们如果将每一个变量赋值都用一行 ...

最新文章

  1. 算法设计7—哈希表1
  2. js实现城市级联选择,二级选择
  3. jquery检测浏览器类型
  4. shell脚本自动备份MySQL数据库
  5. arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
  6. 翻译练习:Hadoop概述
  7. dot全称_游戏dot是什么
  8. 单片机c语言 开方函数,单片机C语言求平方根函数
  9. 程序员心中的“女神”
  10. HTML5UI横向排列,5个实用的UI排版技巧,让你的作品更细致
  11. NanUI 无边框拖拽
  12. 【AiLearning】test2:搭建Shallow Netural Network
  13. 单亲家庭父子的理财通信
  14. 6.1儿童节,致我们回不去的童年
  15. EZo UIBuilder中嵌入微博分享按钮【实例】
  16. 张正友标定法实战-标定森云GMSL相机
  17. java实现最近搜索词条
  18. JavaScript实现加密与解密详解
  19. 【tio-websocket】6、tio-websocket-server使用ByteBuffer收发消息
  20. 最全RAID( RAID 0、RAID 1、RAID 5、RAID 10 ······) 以及它们的优缺点以及原理解析

热门文章

  1. java agent_GitHub - dingjs/javaagent: 基于javaagent开发的APM工具,收集方法的执行次数和执行时间,定时输出成json格式的日志。...
  2. java正则表达式对象_Java正则表达式之Pattern类
  3. 【ABAP】SAP供应商自定义决裁生成实现
  4. SAP-MM-移动类型解析之收货03--退货
  5. 【PP操作手册】成品入库和订单报工
  6. LSMW批处理使用方法(12)_步骤16、17
  7. WF(工作流)模块介绍
  8. TabHost 和 FragmentTabHost
  9. Webservice接口、Webservice例子
  10. html设置团偏跟着移动,雷阵雨云团向东偏南移动,北京两地将有强降雨+7级大风+冰雹!...