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中请使用isinstance()判断变量类型
Aug 25 Python
python实现简单遗传算法
Mar 19 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
python爬虫--selenium模块
Mar 31 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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禁止个别IP访问网站
2013/10/30 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
vue axios登录请求拦截器
2018/04/02 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
python如何实现递归转非递归
2021/02/25 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
小学生操行评语大全
2014/04/22 职场文书
最常使用的求职信
2014/05/25 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫
Windows server 2012搭建FTP服务器
2022/04/29 Servers