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. day11 ss命令 查看网络端口使用情况及对应pid centos7

    [root@oldboyedu ~]# ss -lntup Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNC ...

  2. Django_Setings

    """ Django settings for untitled1 project. Generated by 'django-admin startproject' u ...

  3. 为什么Oracle等数据库软件可以同时创建多个连接

    首先我们要明确的是一个IP跟一个端口确定的是一个进程的地址,也就是我们运行了一个Oracle的数据库,这时候就已经确定的了. oracle监听器也是一个TCP/IP网络中的进程,默认的端口号是1521 ...

  4. codeforces Make The Fence Great Again(dp)

    题目链接:http://codeforces.com/contest/1221/problem/D 题目要求ai ! = ai-1,草纸上推理一下可以发现每一个栅栏可以升高的高度无非就是 +0,+1, ...

  5. CefApp和CefClient的作用

    CefApp 在cefsimple中,提到了一个cefapp的类型,这个类型是一个接口类,主要目的是提供获取三种handler的接口 /// // Implement this interface t ...

  6. sqli-libs(23-28a关)

    Less_23 首先在php文件中加入echo $sql;echo "<br>"; 方法一: :%00 输入?id=1’,报错,说明存在注入漏洞: 输入?id=1' - ...

  7. Windows使用nmake和Makefile编译c++

    今天在本地看到一个lsd_1.6的源文件,不知道什么时候看LSD时下载的,里面只有一个Makefile和源文件. 想到在Linux下可以只用一个make命令就可以得到可执行程序,在Windows下是不 ...

  8. 微信小程序UDP通信,注意点 接收 onMessage 收到的message是ArrayBuffer缓冲,不能直接输出,要另转String处理

    1.WXML 页面代码 <!--index.wxml--> <view class="container"> <view class="us ...

  9. 1.4、WebRTC源码

    文章导读:本篇文章给读者展示WebRTC的源码目录结构,为读者构建全方位的知识体系,如果你有兴趣下载webrtc的源码来编译运行,本节内容可以作为你了解源码的简要说明书,webrtc源码非常庞大的,讲 ...

  10. Python 多任务(进程) day1(3)

    进程间的通信 可以用socket进行进程间的通信 可以用同意文件来进行通信(但是在硬盘上读取和写入比较慢,内存运行太快了) Queue队列(记得是队列)  在同一内存中通信 因为进程之间不能共享全局变 ...