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. 进程管理 supervisor

    背景知识: supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 它是通过fork/exec的方式把这 ...

  2. Mysql中的触发器【转】

    转载:https://www.cnblogs.com/chenpi/p/5130993.html 阅读目录 什么是触发器 特点及作用 例子:创建触发器,记录表的增.删.改操作记录 弊端 什么是触发器 ...

  3. 解决“(1146, "Table 'mydb.django_session' doesn't exist")”报错的方法

    执行 ./manage.py makemigrations sessions ./manage.py migrate sessions

  4. How To Use These LED Garden Lights

    Are you considering the lighting options for the outdoor garden? Depending on how you use it, LED ga ...

  5. linux虚拟机安装jenkins及maven/jdk配置

    一.jenkins安装 (1)tomcat下载,下载地址:https://tomcat.apache.org 选择对应的版本,以下以新版的tomcat 9.0版本为例 下载zip包 (2)jenkin ...

  6. my97日期控件弹出位置显示异常

    使用my97日期选择控件的时候,如果整个页面是有滚动条的,根据触发显示日期的控件的父控件的position不同会显示不同的情况 1.position不为fixed则滑动滚动条,显示的日期层不会出现异常 ...

  7. 两台linux之间传输文件

    scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp local_file remot ...

  8. PHP导出身份证号科学计数法

    最近在做PHP的数据导入和导出,到处身份证号的时候,直接变成了科学计算法,找了一个很简单的方法就是这样 $obj= " ".$v['idcard']; 但是这样有空格啊,网上搜了一 ...

  9. if (flag)

    var flag = false;//暂停标记if (flag){ alert("aa")}else { alert("bb")}bb if (flag) = ...

  10. ($children,$refs,$parent)的使用

    如果项目很大,组件很多,怎么样才能准确的.快速的寻找到我们想要的组件了?? $refs 首先你的给子组件做标记.demo :<firstchild ref="one"> ...