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的消息队列包SnakeMQ使用初探
Jun 29 Python
Python计时相关操作详解【time,datetime】
May 26 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
python 实现在Excel末尾增加新行
May 02 Python
python保存网页图片到本地的方法
Jul 24 Python
python获取点击的坐标画图形的方法
Jul 09 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
python列表生成器迭代器实例解析
Dec 19 Python
Numpy之reshape()使用详解
Dec 26 Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 Python
如何基于Django实现上下文章跳转
Sep 16 Python
Python 阶乘详解
Oct 05 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投票系统防刷票判断流程分析
2012/02/04 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
python列表的常用操作方法小结
2016/05/21 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
Django实现表单验证
2018/09/08 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
python银行系统实现源码
2019/10/25 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
优秀公益广告词大全
2014/03/19 职场文书
体育节口号
2014/06/19 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
新教师教学工作总结
2015/08/12 职场文书
医院病假条范文
2015/08/17 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL