time

如果要在应用程序中周期性地进行某项操作,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时器。要使用定时器,需要先创建一个QTimer实例,将其timeout信号连接到相应的槽,并调用start()。然后定时器会以恒定的间隔发出timeout信号,当窗口控件收到timeout信号后,它就会停止这个定时器。

常用方法

方法 描述
start(milliseconds) 启动或重新启动定时器,时间间隔为毫秒。如果定时器已经运行,它将被停止并重新启动。如果singleShot信号为真,定时器将仅被激活一次
Stop() 停止定时器

常用信号

方法 描述
singleShot 在给定的时间间隔后调用一个槽函数时发射此信号
timeout 当定时器超时时发射此信号

算例1

# -*- coding: utf-8 -*-
'''【简介】PyQT5中 QTimer例子'''from PyQt5.QtWidgets import QWidget,  QPushButton ,  QApplication ,QListWidget,  QGridLayout , QLabel
from PyQt5.QtCore import QTimer ,QDateTime
import sys class WinForm(QWidget):  def __init__(self,parent=None): super(WinForm,self).__init__(parent) self.setWindowTitle("QTimer demo")self.listFile= QListWidget() self.label = QLabel('显示当前时间')self.startBtn = QPushButton('开始') self.endBtn = QPushButton('结束') layout = QGridLayout(self) # 初始化一个定时器self.timer = QTimer(self)# showTime()方法self.timer.timeout.connect(self.showTime)layout.addWidget(self.label,0,0,1,2)   layout.addWidget(self.startBtn,1,0) layout.addWidget(self.endBtn,1,1)         self.startBtn.clicked.connect( self.startTimer) self.endBtn.clicked.connect( self.endTimer) self.setLayout(layout)   def showTime(self): # 获取系统现在的时间time = QDateTime.currentDateTime() # 设置系统时间显示格式timeDisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd");# 在标签上显示时间self.label.setText( timeDisplay ) def startTimer(self): # 设置计时间隔并启动self.timer.start(1000)self.startBtn.setEnabled(False)self.endBtn.setEnabled(True)def endTimer(self): self.timer.stop()self.startBtn.setEnabled(True)self.endBtn.setEnabled(False)if __name__ == "__main__":  app = QApplication(sys.argv)  form = WinForm()  form.show()  sys.exit(app.exec_())

会一直不断的更新时间

首先初始化一个定时器,把定时器的timeout信号与showTime()槽函数连接起来

self.timer=QTimer(self)
self.timer.timeout.connect(self.showTime)

使用连接的槽函数显示当前时间,并在标签上显示系统当前的时间

def showTime(self):
#获取系统当前时间
time=QDateTime.currentDateTime()
#设置系统时间的显示格式
timeDisplay=time.toString(‘yyyy-MM-dd hh:mm:ss dddd’)
#在标签上显示时间
self.lable.setText(timeDisplay)

单击开始按钮,启动定时器,并使按钮失效

#设置时间间隔并启动定时器
self.timer.start(1000)
#设置开始按钮不可点击,结束按钮可点击
self.startBtn.setEnabled(False)
self.endBtn.setEnabled(True)

单击结束按钮,停止定时器,并使按钮失效

#停止定时器
self.timer.stop()
#结束按钮不可点击,开始按钮可以点击
self.startBtn.setEnabled(True)
self.endBtn.setEnabled(False)

# -*- coding: utf-8 -*-
'''【简介】PyQT5中关闭应用例子'''import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *if __name__ == '__main__':app = QApplication(sys.argv)label = QLabel("<font color=red size=128><b>Hello PyQT,窗口会在10秒后消失!</b></font>")label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)label.show()# 设置10s后自动退出QTimer.singleShot(10000, app.quit) sys.exit(app.exec_())

10秒后窗口消失

弹出的窗口会在10秒后消失,模仿程序的启动界面,将弹出的窗口设置为无边框

#设置无边框窗口
label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)

使用QTimer设置时间间隔,10秒后退出程序

#设置10秒后自动退出
QTimer.singleShot(10000,app.quit)

网页交互

PyQt5 使用 QWebEngineView 控件来展示 HTML 页面,WebEngine 框架时基于谷歌的 Chromium 引擎开发。

QWebEngine 类常用方法如下:

方法 描述
load(QUrl url) 加载指定的 URL 并显示
setHtml(QString &html) 将网页视图的内容设置为指定的 HTML 内容

注意事项
说明下 如果算例出现错误

from PyQt5.QtWebEngineWidgets import *
ImportError: DLL load failed: 找不到指定的程序。

则需要先安装下PyQtWebEngine

pip install PyQtWebEngin

算例1

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: yudengwu
# @Date  : 2020/8/31import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *from PyQt5.QtWebEngineWidgets import *
class MainWindow(QMainWindow):def __init__(self):super(MainWindow, self).__init__()self.setWindowTitle('WebViewTest')#self.setWindowIcon(QIcon("./images/Python2.ico"))self.setGeometry(5, 30, 1355, 730)self.browser = QWebEngineView()# 加载外部的 Web 页面self.browser.load(QUrl('https://blog.csdn.net/KOBEYU652453'))self.setCentralWidget(self.browser)if __name__ == "__main__":app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

算例2

# -*- coding: utf-8 -*-'''【简介】QWebEngineView 打开本地网页例子'''from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
import sysclass MainWindow(QMainWindow):def __init__(self):super(QMainWindow, self).__init__()self.setWindowTitle('加载并显示本地页面例子')self.setGeometry(5, 30, 755, 530)self.browser = QWebEngineView()# 加载本地页面url = r'D:/deeplearn/学习草稿/index.html'self.browser.load(QUrl(url))self.setCentralWidget(self.browser)if __name__ == '__main__':app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Test</title>
</head>
<body><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1>
</body>
</html>

算例3

# -*- coding: utf-8 -*- '''【简介】QWebView打开网页例子 '''from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
import sysclass MainWindow(QMainWindow):def __init__(self ):super(QMainWindow, self).__init__()self.setWindowTitle('QWebView打开网页例子')self.setGeometry(5, 30, 1355, 730)self.browser = QWebEngineView()#1 加载html代码self.browser = QWebEngineView()self.browser.setHtml('''<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><body><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>hello PyQt5</h1><h1>hello PyQt5</h1><h1>hello PyQt5</h1><h1>Hello PyQt5</h1></body></html>''')self.setCentralWidget(self.browser)if __name__ == '__main__':app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

算例4

# -*- coding: utf-8 -*- '''【简介】QWebView中网页调用JavaScript '''from PyQt5.QtWidgets  import QApplication , QWidget , QVBoxLayout , QPushButton
from PyQt5.QtWebEngineWidgets import QWebEngineView
import sys# 创建一个 application实例
app = QApplication(sys.argv)
win = QWidget()
win.setWindowTitle('Web页面中的JavaScript与 QWebEngineView交互例子')# 创建一个垂直布局器
layout = QVBoxLayout()
win.setLayout(layout)# 创建一个 QWebEngineView 对象
view = QWebEngineView()
view.setHtml('''<html><head><title>A Demo Page</title><script language="javascript">// Completes the full-name control and// shows the submit buttonfunction completeAndReturnName() {var fname = document.getElementById('fname').value;var lname = document.getElementById('lname').value;var full = fname + ' ' + lname;document.getElementById('fullname').value = full;document.getElementById('submit-btn').style.display = 'block';return full;}</script></head><body><form><label for="fname">First name:</label><input type="text" name="fname" id="fname"></input><br /><label for="lname">Last name:</label><input type="text" name="lname" id="lname"></input><br /><label for="fullname">Full name:</label><input disabled type="text" name="fullname" id="fullname"></input><br /><input style="display: none;" type="submit" id="submit-btn"></input></form></body></html>
''')# 创建一个按钮去调用 JavaScript代码
button = QPushButton('设置全名')def js_callback(result):print(result)def complete_name():view.page().runJavaScript('completeAndReturnName();', js_callback)# 按钮连接 'complete_name'槽,当点击按钮是会触发信号
button.clicked.connect(complete_name)# 把QWebView和button加载到layout布局中
layout.addWidget(view)
layout.addWidget(button)# 显示窗口和运行app
win.show()
sys.exit(app.exec_())


电气工程的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。

pyqt5讲解9:时间模块timer和网页交互相关推荐

  1. db29.7时间格式化为时间到时分秒_python基础系列 | 示例讲解时间模块datetime

    Python 有很多种方式处理日期和时间,常见的时间处理的模块是datetime.time.calendar.能融汇贯通的了解和使用这三个模块,才能轻而易举地用python处理时间.本文以此为目的,通 ...

  2. c++获取当前时间戳_python开发:python时间模块的使用

    前言: 今天元宵节,祝福大家元宵节快乐. 今天在元宵节给各位朋友分享一下python时间模块. 我们在开发中经常会与时间打交道,如:获取事件戳,时间戳的格式化等,这里简要记录一下python操作时间的 ...

  3. po 价格条件表_海纳易拓图文讲解SAP MM模块采购价格条件

    MM物料管理是SAP R/3系统的一个模块,支持日常发生的业务处理功能和过程.MM系统(物料管理)的目的是满足下列各种处理,即物料需求计划.物料采购.库存管理.发票确认和物料估价.主要包括:物料需求计 ...

  4. 用python3+ PyQt5写一个NFC模块的串口小工具的一星期

    用python3+ PyQt5写一个NFC模块的串口小工具的一星期 原因始于我们的小团队,没有写Windows上位机的人才.自己的[NFC读读写模](https://shop165836966.tao ...

  5. pyside2/pyqt5实时显示时间

    pyside2/pyqt5实时显示时间 直接上代码 import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QLabel f ...

  6. 利用python模块pandas获取网页表格,并保存为excel

    文章只用于学习交流 利用python模块pandas获取网页表格. 网页上的表格内容,想要保存下来,有没有办法呢?答案是有的. 主要有两个步骤, 一是读取表格内容, 二是保存读取后的内容. 在这里只讲 ...

  7. python时间模块time详解

    python时间模块time详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块 ...

  8. 【wifi使用指导】wifi模块怎么用?无线路由wifi模块SKW92A/SKW77网页配置说明

    据悉,在全球范围内,WiFi承载了超过一半的数据流量,并且65%-90%的智能手机流量来自WiFi.无线覆盖的实现依赖于WiFi模块提供的WiFi信号,支持AP/Client,Bridge,Gatew ...

  9. python 时间模块备忘

    由于要用到时间模块,为了下次不用去翻文档,这里也简单记录一下: 直接一个脚本看输出: import time print time.time() print time.localtime(time.t ...

最新文章

  1. android 的中文意思
  2. MySQL 学习笔记(18)— 索引的分类、创建、查看、删除等
  3. php 静态类内存,php面向对象中static静态属性与方法的内存位置分析
  4. 《超越需求:敏捷思维模式下的分析》—第1章 1.1节简介
  5. libiconv字符集转换库使用方法
  6. mysql之查询前几条或者中间某几行数据
  7. Bailian2806 公共子序列【最长公共子序列+DP】
  8. [译] 通过官网 Go 语言学习笔记 | How to Write Go Code
  9. 【论文阅读】Efficient Net
  10. MySQL JDBC URL参数(转)
  11. miniusbpcb封装_MINI MICRO A型B型D型USB多类型Altium AD元件库 PCB封装库的电路方案详解...
  12. Ubuntu 18.04截屏
  13. 2010不断创新的供应链应用模式
  14. 安了锐捷后电脑总是弹出交互式检测
  15. 【Oracle】userenv()函数介绍分析
  16. 纯蓝ICON_学习教程
  17. 在vmware里面免费安装纯净的xp虚拟机
  18. Arduino设置esp8266实现局域网通信
  19. java jdk 8u101_JDK1.8安装
  20. 关于C语言的图像光标处理

热门文章

  1. python统计字符出现的次数最多的字符_Python统计字符串中出现次数最多的人名
  2. 解决spring boot项目启动后访问接口出现日志乱码
  3. LeetCode 14 最长公共前缀
  4. C#——《C#语言程序设计》实验报告——继承与多态——银行ATM程序
  5. Google Chrome —— 使用 PowerShell 命令安装 Google Chrome 浏览器
  6. Hat’s Words
  7. java biginteger位数,Java之BigInteger(面试题12:打印1到最大的n位数)
  8. 计算机网络(谢希仁第八版)第三章:数据链路层
  9. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
  10. 软件工程概论 课堂练习【空调公司维修服务流程】