1、装载外部网页页面
'''
用web浏览器控件QWebEngineView控件显示网页
PyQt5和Web的交互技术 同时使用python和Web开发程序,混合开发 Python+JavaScript+HTML5+CSS技术程序混合可做丰富的UI
语言之间互相调用 '''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys class webview(QMainWindow):
def __init__(self):
super(webview,self).__init__()
self.setWindowTitle("打开外部网页例子")
self.setGeometry(100,100,1355,730)
self.b=QWebEngineView()
self.b.load(QUrl("http://www.baidu.com")) #设置浏览的网页
self.setCentralWidget(self.b) if __name__=="__main__":
app=QApplication(sys.argv)
p=webview()
p.show()
sys.exit(app.exec_())

2、显示嵌入的HTML代码加载网页
'''
用web浏览器控件QWebEngineView控件显示网页
PyQt5和Web的交互技术
'''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys class webHTML(QMainWindow):
def __init__(self):
super(webHTML,self).__init__()
self.setWindowTitle("打开外部网页例子")
self.setGeometry(100,100,1355,730)
self.b=QWebEngineView() #直接把HTML网页代码嵌入到python代码中也可以直接显示
self.b.setHtml('''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试页面</title>
</head>
<body>
<h1>Hello world </h1>
<h2>Hello world </h2>
<h3>Hello world </h3>
<h4>Hello world </h4>
</body>
</html>
''')
self.setCentralWidget(self.b) if __name__=="__main__":
app=QApplication(sys.argv)
p=webHTML()
p.show()
sys.exit(app.exec_())

3、装载本地网页页面
'''
用web浏览器控件QWebEngineView控件显示网页
PyQt5和Web的交互技术 '''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys,os class webview(QMainWindow):
def __init__(self):
super(webview,self).__init__()
self.setWindowTitle("装载本地网页例子")
self.setGeometry(100,100,1355,730)
self.b=QWebEngineView() #装载本地网页
url=os.getcwd()+"/test.html" #获得本地网页的完整路径
print(url) #输出当前完整路径
self.b.load(QUrl.fromLocalFile(url)) #设置浏览的网页 self.setCentralWidget(self.b) if __name__=="__main__":
app=QApplication(sys.argv)
p=webview()
p.show()
sys.exit(app.exec_())

4、多线程控件-动态显示当前时间QTimer()控件
'''
多线程(多CPU):用于同时完成多个任务

多线程(并发完成任务)实现方式:
QTimer定时器 周期性任务
QThread 单个任务 '''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QTimer,QDateTime
import sys class showtime(QWidget):
def __init__(self):
super(showtime,self).__init__()
self.setWindowTitle("动态显示当前时间")
#self.resize(800,300) self.lable=QLabel("显示当前时间")
self.startbtn=QPushButton("开始按钮")
self.endbtn=QPushButton("结束按钮")
layout=QGridLayout() #创建一个计时器QTimer()
self.timer=QTimer()
self.timer.timeout.connect(self.showtime) layout.addWidget(self.lable,0,0,1,2)
layout.addWidget(self.startbtn,1,0)
layout.addWidget(self.endbtn,1,1) self.startbtn.clicked.connect(self.starttime)
self.endbtn.clicked.connect(self.endtime)
self.setLayout(layout)
def showtime(self):
time=QDateTime.currentDateTime()
timedispaly=time.toString("yyyy-MM-dd hh:mm:ss dddd")
self.lable.setText(timedispaly)
def starttime(self):
self.timer.start(1000) #设置定时器时间间隔为1秒
self.startbtn.setEnabled(False)
self.endbtn.setEnabled(True)
def endtime(self):
self.timer.stop() #定时器停止
self.startbtn.setEnabled(True)
self.endbtn.setEnabled(False) if __name__=="__main__":
app=QApplication(sys.argv)
p=showtime()
p.show()
sys.exit(app.exec_())

5、定时关闭窗口
'''
定时关闭窗口和程序
QTimer.singleShot方法(定时器时间间隔,所需运行程序)
指定一定的时间来运行程序一次
'''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys if __name__=="__main__":
app=QApplication(sys.argv)
label=QLabel("<font color=red size=140><b>Hello World,窗口在5秒后自动关闭!</b></font>")
label.setWindowFlags(Qt.SplashScreen | Qt.FramelessWindowHint)
label.show()
QTimer.singleShot(5000,app.quit) #设置显示时间为5秒
sys.exit(app.exec_())

6、多线程计数器QThread()类
'''
多线程(多CPU):用于同时完成多个任务
QThread多线程类编写计数器 QThread
def run(self):
while True:
self.sleep(1)
if sec==5:
break; QLCDNumber WorkThread(Qthread)
用到自定义信号 '''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys #先定义多线程类和不同的发射信号
sec=0
class WorkThread(QThread):
timer=pyqtSignal() #定义一个信号类
end=pyqtSignal() #定义一个信号
def run(self):
while True:
self.sleep(1) #休眠1秒
if sec==5:
self.end.emit() #发送end信号
break
self.timer.emit() #发送timer信号 class counter(QWidget):
def __init__(self):
super(counter,self).__init__()
self.setWindowTitle("线程类控件编写计数器")
self.resize(300,120) layout=QVBoxLayout()
self.lcdnumber=QLCDNumber() #创建一个QLCD控件显示计数器数字
layout.addWidget(self.lcdnumber) btn=QPushButton("开始计数")
layout.addWidget(btn) self.workthread=WorkThread() #定义一个初始化的多线程类
self.workthread.timer.connect(self.counttime) #将信号与槽函数连接
self.workthread.end.connect(self.end)
btn.clicked.connect(self.work)
self.setLayout(layout) def counttime(self):
global sec
sec+=1
self.lcdnumber.display(sec) #用QLCD控件形式显示计数器
def end(self):
QMessageBox.information(self,"消息","计时5秒结束",QMessageBox.Ok)
def work(self):
self.workthread.start() if __name__=="__main__":
app=QApplication(sys.argv)
p=counter()
p.show()
sys.exit(app.exec_())

7、Python调用JavaScript
'''
Python与JavaScript相互交互,数据交换 '''
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys,os class webview(QWidget):
def __init__(self):
super(webview,self).__init__()
self.setWindowTitle("python调用JavaScript代码")
self.setGeometry(100,100,1355,730)
self.layout=QVBoxLayout()
self.setLayout(self.layout) self.b=QWebEngineView()
url=os.getcwd()+"/tt.html"
self.b.load(QUrl.fromLocalFile(url)) #设置浏览的网页
self.layout.addWidget(self.b) self.btn=QPushButton("设置全名")
self.btn.clicked.connect(self.fullname)
self.layout.addWidget(self.btn)
def js(self,result):
print(result)
def fullname(self):
self.value="hello world"
self.b.page().runJavaScript('fullname("'+ self.value+'");',self.js) #运行JavaScript代码 if __name__=="__main__":
app=QApplication(sys.argv)
p=webview()
p.show()
sys.exit(app.exec_())
JavaScript代码(HTML网页设置代码):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试页面</title>
<script>
function fullname(value) {
alert(value)
var firstname=document.getElementById("firstname").value;
var lastname=document.getElementById("lastname").value; var fullname=firstname+" "+lastname; document.getElementById("fullname").value=fullname;
document.getElementById("submit-btn").style.display="block";
return fullname
}
</script>
</head>
<body>
<form>
<label>First Name</label>
<input type="text" name="firstname" id="firstname"></input>
<br/>
<label>Last Name</label>
<input type="text" name="lastname" id="lastname"></input>
<br/>
<label>Full Name</label>
<input type="text" name="fullname" id="fullname"></input>
<br/>
<input style="display: none;" type="submit" id="submit-btn"/>
</form>
</body>
</html>

8、JavaScript调用个python函数进行计算阶乘
'''
Python与JavaScript相互交互,数据交换
将python一个对象映射到JavaScript当中 将槽函数映射到JavaScript中
编辑一个计算阶乘的类,利用递归的方法
'''
from PyQt5.QtCore import *
class F(QObject):
def f(self,n):
if n==0 or n==1:
return 1
else:
return self.f(n-1)*n
f=F()
print(f.f(5))
												

PyQt5中Web操作与多线程定时器的更多相关文章

  1. pyqt5 多线程+定时器+读取本地图片

    前言 一个程序界面有多个button 按钮时,单击一个按钮,若此按钮对应的信号正在执行,且还未执行完毕: 此时再次单击另外一个按钮,就会出现假死状态. 这个时候我们就需要使用 多线程去解决 多线程+定 ...

  2. Web Worker javascript多线程编程(一)

    什么是Web Worker? web worker 是运行在后台的 JavaScript,不占用浏览器自身线程,独立于其他脚本,可以提高应用的总体性能,并且提升用户体验. 一般来说Javascript ...

  3. 【转】Web Worker javascript多线程编程(一)

    原文:https://www.cnblogs.com/peakleo/p/6218823.html -------------------------------------------------- ...

  4. 聊聊Python中的多进程和多线程

    今天,想谈一下Python中的进程和线程. 最近在学习Django的时候,涉及到了多进程和多线程的知识点,所以想着一下把Python中的这块知识进行总结,所以系统地学习了一遍,将知识梳理如下. 1. ...

  5. Web Worker javascript多线程编程(二)

    Web Worker javascript多线程编程(一)中提到有两种Web Worker:专用线程dedicated web worker,以及共享线程shared web worker.不过主要讲 ...

  6. Global.asax中的操作数据库代码无法执行

    本人最近在做一个基于Access数据库的Web应用程序,为了实现一个定时更新数据库的需求,我在Global.asax中的Application_Start函数里写了个计时器, void Applica ...

  7. eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)

    我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...

  8. Java中使用CountDownLatch进行多线程同步

    CountDownLatch介绍 在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法: 1.synchronized关键字进行同步. 2.Lock锁接口及其实现类ReentrantL ...

  9. MacOS和iOS开发中异步调用与多线程的区别

    很多童鞋可能对Apple开发中的异步调用和多线程的区别不是太清楚,这里本猫将用一些简单的示例来展示一下它们到底直观上有神马不同. 首先异步调用可以在同一个线程中,也可以在多个不同的线程中.每个线程都有 ...

随机推荐

  1. 【译】用 `Wasmer` 进行插件开发 1

    [译]用 Wasmer 进行插件开发 1 Using Wasmer for Plugins Part 1 译文 原文链接 https://wiredforge.com/blog/wasmer-plug ...

  2. 2.sleep和wait的区别:

    sleep是Thread类的方法,wait是object(Java类库的老祖宗)的方法 sleep阻塞的线程在指定时间后,会转变为可执行状态:wait它要等待notify的唤醒 执行了sleep的线程 ...

  3. Poj1328Radar Installation雷达安装

    原题链接 经典贪心,转化为问题为,对于所有的区间,求最小的点数能使每个区间都至少有一个点. #include<iostream> #include<cstdio> #inclu ...

  4. 如何预测股票分析--先知(Prophet)

    在上一篇中,我们探讨了自动ARIMA,但是好像表现的还是不够完善,接下来看看先知的力量! 先知(Prophet) 有许多时间序列技术可以用在股票预测数据集上,但是大多数技术在拟合模型之前需要大量的数据 ...

  5. AcWing 870. 约数个数

    #include <iostream> #include <algorithm> #include <unordered_map> #include <vec ...

  6. Linux - seq

    1. 概述 生成序列的命令 之前貌似写过 seq 命令, 这次单独拉出来再写一次吧 节操先放一放 2. 命令 1. 帮助 命令 # 输出我就不打了, # 这个命令可用, 证明组件可用 > seq ...

  7. 初识HttpRunner

    一.背景 前段时间接触到HttpRunner自动化测试框架,发现对测试人员代码能力要求极低,用户只需准备好用例脚本即可发起测试,非常方便,故记录一下. 二.安装 运行环境 HttpRunner框架基于 ...

  8. git拉取代码

    1,用sourcetree拉取的时候 遇到  fatal: repository 'http://gitlab.xxx.com/XXX/XXX.git/' not found 2,可以直接在要存放代码 ...

  9. dropLoad.js移动端分页----Vue数据每次清空累加

    dropLoad.js移动端使用 1.需要引入  dropload   必要的两个文件dropload.css .dropload.min.js 此案例在vue项目中使用过程: var vm = ne ...

  10. Euler Sums系列(一)

    \[\Large\sum_{n=1}^{\infty} \frac{H_{n}}{2^nn^4}\] \(\Large\mathbf{Solution:}\) Let \[\mathcal{S}=\s ...