PyQt5案例汇总(简洁版)

01菜单栏


import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIconclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):exitAct = QAction(QIcon('exit.png'), '&Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.setStatusTip('Exit application')exitAct.triggered.connect(qApp.quit)self.statusBar()menubar = self.menuBar()fileMenu = menubar.addMenu('&File')fileMenu.addAction(exitAct)self.setGeometry(300, 300, 300, 200)self.setWindowTitle('Simple menu')self.show()app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

02菜单栏++

import sys
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QAction
from PyQt5.QtWidgets import qApp
from PyQt5.QtWidgets import QApplicationfrom PyQt5.QtGui import QIconclass Demo(QMainWindow):def __init__(self):# 重新执行父类的初始化方法(默认的一些操作)super().__init__()# 加入自定义方法self.initUI()def initUI(self):# 设置菜单的图标exitAct = QAction(QIcon('exit.png'),'&Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.setStatusTip('Exit application')exitAct.triggered.connect(qApp.quit)self.statusBar()menubar = self.menuBar()file_menu = menubar.addMenu('&File')file_menu.addAction(exitAct)self.setGeometry(300,300,300,300)self.setWindowTitle('简单的菜单')self.show()app = QApplication(sys.argv)
ex = Demo()
app.exec()

03简单的窗口(细致分析)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Created by xiaoming# 本模块的功能:<># 这个简单的小例子展示的是一个小窗口。但是我们可以在这个小窗口上面做很多事情,改变大小,最大化,最小化等,这需要很多代码才能实现。这在很多应用中很常见,没必要每次都要重写这部分代码,Qt已经提供了这些功能。PyQt5是一个高级的工具集合,相比使用低级的工具,能省略上百行代码。# 导入一些需要的模块
import sys
# 这里面引入了qtwidgets模块,其中包含了基本的用户界面控件
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget# 创建app对象
app = QApplication(sys.argv)
# 每个pyqt5应用都必须创建一个应用对象
# sys.argv是一组命令行参数的列表
# python可以在shell里运行,这个参数提供对脚本控制的功能
w = QWidget()
# qwidget是用户控件中的基本控件,提供了基本的应用构造器
# 默认情况下,构造器没有父级,没有父级的构造器称为窗口(window)
w.resize(250,450)
# resize这个方法能够改变控件的大小,这里的意思的窗口宽250px,高450px
w.move(300,200)
# move()是修改控件位置的方法.他把控件放置到屏幕坐标的(300,200位置)
# 注:屏幕坐标的原点是屏幕的左上角
w.setWindowTitle('我的第一个窗口')
# 这里给这个窗口添加了一个标题,标题在标题栏展示
# 虽然看起来是废话,但是以后回学习到各种栏,还是要注意一下,多了就懵逼了
w.show()
# show()能让控件在桌面上显示出来.控件在内存中创建,之后才能在显示器上显示出来
sys.exit(app.exec())
# 最后,我们进入了应用的主循环中,事件处理器这个时候开始工作.
# 主循环从窗口上接收事件,并把事件传入到派发到应用控件里.
# 当调用exit()方法或者直接销毁主控件时,主循环就会结束
# sys.exit()方法能确保主循环安全退出.外部环境能通知主控件怎么结束# exec_()之所以有个下划线,是因为exec是一个python的关键字

04带窗口图标


# 首先还是要导入对应的模块
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget
from PyQt5.QtGui import QIcon# 之前的例子是过程式编程,python当然支持面向对象编程
# 创建一个类
class Test(QWidget):def __init__(self):super().__init__()self.initUI()  # 使用initUI方法创建了一个GUI'''面向对象编程最重要的三个部分是类(class),数据和方法.我们创建了一个类的调用,这个类继承自QWidget.这个就意味着,我们调用了两个构造器,一个是这个类本身的,一个是这个类继承的super()构造器方法返回父级的对象.__init()方法是构造器的一个方法.俗称初始化魔术方法'''def initUI(self):self.setGeometry(300, 200, 700, 400)self.setWindowTitle('标题起啥都行')self.setWindowIcon(QIcon('logo.png'))'''上面三个方法都是继承自QWidget类.setGeometry() 有两个作用: 把窗口放到屏幕上并且设置窗口大小.参数分别代表屏幕坐标的x y 和窗口大小的长和宽setWindowTitle就是设置标题内容,不用多说也就是说这个方法是 resize()和move()的合体.最后一个方法就是添加图标,先创建一个QIcon对象,然后接受一个路径主辅材作为参数,显示图标'''self.show()yingyong = QApplication(sys.argv)
ex1 = Test()
sys.exit(yingyong.exec_())# 应用和示例的对象创立,主循环开始

05提示框


# 导入模块
import sysfrom PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QToolTip
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QApplicationfrom PyQt5.QtGui import QFont# 来直接来一个类
class Demo(QWidget):    #继承自QWidget# 初始化魔术方法直接上def __init__(self):# 父类的方法还原super().__init__()# 执行自己的方法self.initUI()def initUI(self):# 这个字体的话,系统中有的都行QToolTip.setFont(QFont('微软雅黑',15))# 这个 例子中,我们创建 了一个提示框self.setToolTip('不信了还<b>这是一个啥玩意</b>')# 这个高,实在是高# html中的标签也能应用样式# 强,实在是强btn = QPushButton('点我',self)# 这个静态方法设置了提示框的字体,我们使用了15px的微软雅黑的字体btn.setToolTip('君不见黄河之水<br>天上来')# 调用setTooltip()创建提示框可以使用富文本格式的内容btn.resize(btn.sizeHint())btn.move(50,70)self.setGeometry(200,150,800,450)self.setWindowTitle('标题就是没有标题')# 显示self.show()app = QApplication(sys.argv)
ex1 = Demo()
sys.exit(app.exec_())

06关闭窗口


# 本模块的功能:<>
'''
TODO 要做的可多了
'''
# 关闭一个窗口最直观的方式就是点击标题栏的那个×,这个例子里面
# print(我们展示的是如何用程序关闭一个窗口)
# print(这里我们将解除)到一点single和slots的知识
# 本例子使用的是QPushButton组件类
# QPushButton(string text,Qwidget parent = None)
# text参数是想要显示的按钮名称,parent参数是放在按钮上的组件
# 在我们的例子里面,这个参数是QWidget.应用中的组件都是一层一层(继承而来的)
# 在这个层里,大部分的组件都有自己的父级,没有父级的组件,是顶级的窗口# 还是tmd要导入对应的包和模块
import sysfrom PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QApplicationfrom PyQt5.QtCore import QCoreApplication
# 程序需要QtCore对象# 上来先来一个类
class Example(QWidget):# 初始化魔术方法def __init__(self):super().__init__()self.initUI()def initUI(self):qbtn = QPushButton('退出就退出',self)# 创建一个继承自 QPushButton 的按钮.# 第一个参数是按钮的文本,第二个参数是按钮的父级组件# 这个例子中,父级组件就是我们创建的继承自QWidget 的 Example 类qbtn.clicked.connect(QCoreApplication.instance().quit)# 事件传递系统在PyQt5内建的single和slot机制里面.点击按钮之后,信号会被捕捉并给出既定的反应# QCoreApplication包含了事件的主循环,它能添加和删除所有的事件# instance()创建 了一个它的实例.# QCoreApplication是在QApplication里创建的# 点击事件和能终止进程并退出应用的quit函数绑定在了一起.# 在发送者和接受者之间建立了通讯,发送者就是按钮,接受者就是应用对象qbtn.move(50,50)self.setGeometry(300,200,250,150)self.setWindowTitle("退出按钮练习")# 显示self.show()yingyong = QApplication(sys.argv)
ex1 = Example()
sys.exit(yingyong.exec_())
# 这里创建了一个点击之后就退出窗口的按钮

07消息盒子


# 导入模块
import sys
from PyQt5.QtWidgets import  QWidget
from PyQt5.QtWidgets import  QMessageBox
from PyQt5.QtWidgets import  QApplication# 创建一个类
class Example(QWidget):def __init__(self):super().__init__()# 执行自己的函数self.initUI()def initUI(self):self.setGeometry(300,200,250,150)self.setWindowTitle('消息盒子')self.show()def closeEvent(self, QCloseEvent):reply = QMessageBox.question(self, '消息啊哈!',"你确定你要退出了",QMessageBox.yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:QCloseEvent.accept()else:QCloseEvent.ignore()app = QApplication(sys.argv)
demo = Example()
app.exec_()

UI文件生成demo01模块(主窗口)

test.py代码如下:

import sys
from PyQt5.QtWidgets import *
# 导入生成的 py模块
from demo01 import *
# 创建app
app = QApplication(sys.argv)
# 实例化主窗口对象
w = QMainWindow()
# 实例化并调用初始化方法
Ui_MainWindow().setupUi(w)
# 显示窗口
w.show()
sys.exit(app.exec_())
pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人关于浮动的理解

浮动带来的影响&#xff1a; ①. 能够让浮动之后的元素布局产生混乱 &#xff08;元素浮动后脱离了标准文档流&#xff0c;它的布局也就不再遵循标准文档流的规则&#xff0c;多个浮动元素在一起的时候就会随着窗口的变化而变化&#xff0c;也就失去了稳定的布局&#xff09; ②…

接口测试 rest-assured 使用指南

转载&#xff1a;https://testerhome.com/topics/7060 原文&#xff1a;https://github.com/rest-assured/rest-assured/wiki/Usage本文github地址&#xff1a;https://github.com/RookieTester/rest-assured-doc 注意&#xff0c;如果您正在使用1.9.0或者更早的版本请参考旧文…

python中格式化字符串的作用_python中字符串格式化的意义(化妆)

格式 描述%%百分号标记 #就是输出一个%%c字符及其ASCII码%s字符串%d有符号整数(十进制)%u无符号整数(十进制)%o无符号整数(八进制)%x无符号整数(十六进制)%X无符号整数(十六进制大写字符)%e浮点数字(科学计数法)%E浮点数字(科学计数法&#xff0c;用E代替e)%f浮点数字(用小数点…

MongoDB的快速手动安装

就是关于MongoDB主从库的安装配置和启动。网上关于MongoDB的安装有大量的文章供大家学习。我这里提供一个Windows环境下MongoDB主从库的快速手动安装的方法&#xff0c;只需要三步即可。 先下载的安装包&#xff0c;解压缩后找到bin文件夹&#xff0c;将bin文件夹拷贝至你自己的…

MP4音频解码信息

文章转载自&#xff1a;http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者&#xff0c;编辑&#xff1a;小乙哥 MP4文件格式分为头部和数据两部分&#xff0c;头部是由许多被称作Atom的结构单元嵌套或排列而成&#xff0c;数据部分则完全为实际数据…

时序图 分支_UML用例图

UML用例图用例图有以下东东:用例参与者关联系统边界用例使用椭圆来表示&#xff0c;椭圆里边写上用例的名称:这里的用例可以理解为一个动作或行为,或者一个对象。参与者用一个小人儿,在小人儿下面写上参与者名称,例如学生:关联用一条线表示:把很多个用例放到一个大的矩形框里。…

Python脚本实现汉子转拼音

起步 中华文化博大精深&#xff0c;是中华民族的财富&#xff0c;吸收和继承发扬中 华文化&#xff0c;是现代每个炎黄子孙无可推卸的天职。 今天小编就交大家用python写一个脚本,实现汉子和拼音之间的转换 pinyin.py 汉字转拼音,With Python Example: from pinyin impor…

MySQL innodb_table_stats表不存在的解决方法

在做实验时&#xff0c;使用mysqldump命令报错[rootlinux-mysql02 3306]# mysqldump -uroot -p123456 -S /u02/data/3306/mysql.sock -A -B --events | gzip > /opt/rep.sql.gzmysqldump: Got error: 1146: Table mysql.innodb_index_stats doesnt exist when using LOCK TA…

自定义封装 banner 组件

1. 效果图预览 2.基本功能 一个简单方便的轮播图组件&#xff0c;基于viewpager 基础上进行的封装。可设置 项目中图片&#xff0c;网络图片&#xff0c; View&#xff1b;支持循环自动播放&#xff0c;手势滑动切换&#xff0c;item点击事件,可设置 点点的样式宽高、颜色、大小…

vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...

最近在跑实验&#xff0c;但是突然发现程序运行变慢&#xff0c;然后top命令查看程序运行情况&#xff0c;发现有异常进程&#xff0c;名字叫 bash&#xff0c;占用 2400% CPU计算资源。刚开始怀疑是挖矿程序&#xff0c;因实验室网络IP为教育网公网&#xff0c;怀疑被攻击&…

3gp文件格式研究 (转windcao的专栏)

序言 06我开始做3gp文件的播放器,但是关于3gp的文档太少了也很难找,在网友luxh的帮助下,我终于有了第一份关于3gp文件格式的文档《ISO/IEC 14496-12&#xff0c;ISO媒体文件格式》.在此真心感谢luxh的贡献.当然了是英文版的,有文档就不错了.为了便于查阅和理解,我把之后陆续找…

Android开发必用工具及其进阶途径

三百六十行&#xff0c;行行出状元&#xff0c;怎么样才能在Android行业中当个状元了&#xff0c;开发过程中的高效、自我能力的提升显得至关重要&#xff0c;步入IT行业更是要时时刻刻学习&#xff0c;新技术更新快&#xff0c;今天将介绍一下Android开发中必用工具及其进阶途…

MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

原来是MySQL表中不能包含关键字 转载于:https://www.cnblogs.com/flycoding/p/7088465.html

Python脚本实现图片加水印

起步 图片是指由图形、图像等构成的平面媒体,有形式的事物&#xff0c;我们看到的&#xff0c;是图画、照片、拓片等的统称。 为了保护一些原创图片的版权,某些时候我们需要在图片上面,加上水印,当然你可以用Photoshop来做,只不过如果图片数量过多,亦或者图片的动态生成的时候…

yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析

背景在实时计算平台上通过YarnClient向yarn上提交flink任务时一直卡在那里&#xff0c;并在client端一直输出如下日志&#xff1a;(YarnClusterDescriptor.java:1036)- Deployment took more than 60 seconds. Please check if the requested resources are available in the Y…

MPEG-2TS码流编辑的原理及其应用(转载

[作者&#xff1a;辽宁电视台 赵季伟] 在当今数字媒体不断发展、新媒体业务不断涌现 的前提下&#xff0c;实践证明襁褓中的新媒体只有两种经营方略可供选择&#xff1a;或是购买并集成整套节目&#xff0c;或是低成本深加工新节目&#xff0c;再不可能去按照传统生产模式…

Python中的yield详解

阅读别人的python源码时碰到了这个yield这个关键字&#xff0c;各种搜索终于搞懂了&#xff0c;在此做一下总结&#xff1a; 通常的for…in…循环中&#xff0c;in后面是一个数组&#xff0c;这个数组就是一个可迭代对象&#xff0c;类似的还有链表&#xff0c;字符串&#xf…

shell循环结构之while循环

while循环 1) while CONDITION; dostatementstatement<改变循环条件真假的语句>done 编写脚本&#xff0c;计算1---100的和 #!/bin/bash#sum0i1while [ $i -le 100 ]; dolet sum$sum$ilet i$i1doneecho $sum2) while true; do statementstatementdone #!/bin/bash#while …

python 管道队列_关于python:Multiprocessing-管道与队列

Python的多处理程序包中的队列和管道之间的根本区别是什么&#xff1f;在什么情况下应该选择一种&#xff1f; 什么时候使用Pipe()有优势&#xff1f; 什么时候使用Queue()有优势&#xff1f;Pipe()只能有两个端点。Queue()可以有多个生产者和消费者。何时使用它们如果需要两个…

pip默认使用国内镜像地址

很多小伙伴在ubuntu系统下,使用pip安装会很慢 以为安装源在国外服务器上面 今天小编就教大家配置成让pip默认从国内源中寻找安装包 首先CtrlAltT打开终端 进入家目录 cd ~在家目录中创建一个文件夹,命名为.pip mkdir .pip进入目录,并创建一个名为pip.conf的文件 cd .pip…