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使用urllib2模块获取gravatar头像实例
Dec 18 Python
python动态监控日志内容的示例
Feb 16 Python
Python、Javascript中的闭包比较
Feb 04 Python
python实现识别相似图片小结
Feb 22 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
python实现简易版学生成绩管理系统
Jun 22 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python自动化爬取天眼查数据的实现
Jun 15 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中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
浅析PHP开发规范
2018/02/05 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
javascript fullscreen全屏实现代码
2009/04/09 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python列表计数及插入实例
2014/12/17 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
高二历史教学反思
2014/01/25 职场文书
大二自我鉴定
2014/01/31 职场文书
房屋出租协议书
2014/04/10 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
新教师培训心得体会
2014/09/02 职场文书
2014年保洁工作总结
2014/11/24 职场文书
旷工检讨书1000字
2015/01/01 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python