PyQt实现计数器的方法示例


Posted in Python onJanuary 18, 2021

1、PyQt介绍

PyQt是python的GUI框架之一,这是一个跨平台的UI框架,即可以运行在windows、Linux、Mac上,可以用来替换Python内置的TKinter。

PyQt支持Python2.x和Python3.x。而Qt是Digia公司的产品,是一个跨平台的C++GUI开发框架,也支持python,

目前Qt逐步取代MFC,成为大多数公司开发GUI程序的主要选择,其丰富的类库和一份代码不同编译的跨平台性,

使得Qt成为桌面客户端开发者很有必要去学习和掌握的框架。

下面是通过pyqt实现的计数器,从0开始计数,到60归0,重新开始计数,支持暂停。通过这个demo,

可以快速熟悉pyqt如何引入qt的模块和类,以及如何使用Qt独特的信号槽机制。

2、界面效果

PyQt实现计数器的方法示例

1、安装环境

打开cmd,通过pip3安装PyQt5(这里假定已经安装了python和pycharm)

PyQt实现计数器的方法示例

安装pyqt5-tools

PyQt实现计数器的方法示例

如果出现以下错误,重新安装即可

PyQt实现计数器的方法示例

3、主要代码

1、引入相关模块

引入待会需要使用的qt模块。QtWidgets是界面布局和控件相关,QtCore是主要使用的类,比如以上的QTimer定时器类。

from PyQt5.QtWidgets import QWidget,QPushButton,\
  QLabel,QVBoxLayout, QHBoxLayout,QApplication,QLCDNumber
from PyQt5.QtCore import QTimer

2、初始化界面布局和关联信号槽,设置窗口的标题和显示的位置​​​​​​​

class Form(QWidget):
 
  def __init__(self):
    super().__init__()
 
    self.lable = QLabel("计时")
    self.timer = QTimer(self)
    self.lcd = QLCDNumber(self)
    self.startBtn = QPushButton('开始计时')
    self.stopBtn = QPushButton('暂停')
    self.startBtn.clicked.connect(self.startTimer)
    self.stopBtn.clicked.connect(self.stopTimer)
 
    vLayout = QVBoxLayout()
    hLayout = QHBoxLayout()
 
    vLayout.addWidget(self.lcd)
    hLayout.addWidget(self.startBtn)
    hLayout.addWidget(self.stopBtn)
    vLayout.addLayout(hLayout)
 
    self.setLayout(vLayout)
    self.timer.timeout.connect(self.showNum)
 
    self.setGeometry(300,300,400,300)
    self.setWindowTitle("Stopwatch")
    self.num = 0

这里把开始计数和暂停按钮通过水平布局放置,再和QLCDNumber进行垂直布局。然后通过connect设置对应的信号与槽的连接。

4、全部代码(拷贝即可运行)​​​​​​​

import sys
from PyQt5.QtWidgets import QWidget,QPushButton,\
  QLabel,QVBoxLayout, QHBoxLayout,QApplication,QLCDNumber
from PyQt5.QtCore import QTimer
 
 
class Form(QWidget):
 
  def __init__(self):
    super().__init__()
 
    self.lable = QLabel("计时")
    self.timer = QTimer(self)
    self.lcd = QLCDNumber(self)
    self.startBtn = QPushButton('开始计时')
    self.stopBtn = QPushButton('暂停')
    self.startBtn.clicked.connect(self.startTimer)
    self.stopBtn.clicked.connect(self.stopTimer)
 
    vLayout = QVBoxLayout()
    hLayout = QHBoxLayout()
 
    vLayout.addWidget(self.lcd)
    hLayout.addWidget(self.startBtn)
    hLayout.addWidget(self.stopBtn)
    vLayout.addLayout(hLayout)
 
    self.setLayout(vLayout)
    self.timer.timeout.connect(self.showNum)
 
    self.setGeometry(300,300,400,300)
    self.setWindowTitle("Stopwatch")
    self.num = 0
 
  def showNum(self):
    self.lcd.display(self.num)
    self.num=self.num+1
    if(self.num==60):
      self.num=0
 
  def startTimer(self):
    self.timer.start(1000)
 
  def stopTimer(self):
    self.timer.stop()
 
if __name__ == '__main__':
  app = QApplication(sys.argv)
  form = Form()
  form.show()
  sys.exit(app.exec_())

通过短短50行代码(还可以优化),就可以实现一个简单的计数器,python就是那么简洁,再搭配跨平台的Qt,可谓如虎添翼。

不过想更快的掌握pyqt,还需要去学习一下qt的使用和常用的类,才能做出更多有趣的东西。

到此这篇关于PyQt实现计数器的方法示例的文章就介绍到这了,更多相关PyQt 计数器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
解决python2.7用pip安装包时出现错误的问题
Jan 23 Python
深入理解Python3中的http.client模块
Mar 29 Python
Python实现完整的事务操作示例
Jun 20 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
利用Python如何批量更新服务器文件
Jul 29 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
Django中的session用法详解
Mar 09 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
python 基于opencv实现高斯平滑
Dec 18 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 #Python
Python实现一个论文下载器的过程
Jan 18 #Python
利用python为PostgreSQL的表自动添加分区
Jan 18 #Python
如何查看python关键字
Jan 17 #Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 #Python
Python中的面向接口编程示例详解
Jan 17 #Python
Python学习之time模块的基本使用
Jan 17 #Python
You might like
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
JavaScript 基础问答三
2008/12/03 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
原生js实现日期选择插件
2020/05/21 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
详解Python if-elif-else知识点
2018/06/11 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
python实现图像拼接功能
2020/03/23 Python
python openCV自制绘画板
2020/10/27 Python
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
平面设计的岗位职责
2013/11/08 职场文书
四议两公开实施方案
2014/03/28 职场文书
婚前财产协议书范本
2014/10/19 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
python编程项目中线上问题排查与解决
2021/11/01 Python