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 相关文章推荐
python比较两个列表大小的方法
Jul 11 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
Python 字符串换行的多种方式
Sep 06 Python
浅析python继承与多重继承
Sep 13 Python
python实现银联支付和支付宝支付接入
May 07 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
python对接ihuyi实现短信验证码发送
May 10 Python
python如何设置静态变量
Sep 07 Python
Python爬虫基础讲解之请求
May 13 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在网页中动态生成PDF文件详细教程
2014/07/05 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
基于webpack 实用配置方法总结
2017/09/28 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
Python内置函数之filter map reduce介绍
2014/11/30 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
pyshp创建shp点文件的方法
2018/12/31 Python
Django 静态文件配置过程详解
2019/07/23 Python
基于python调用psutil模块过程解析
2019/12/20 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
课外访万家心得体会
2014/09/03 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis